javascript - js异步加载与DOM的执行顺序,打包js。(不用gulp和webpack)
问题描述
目的:想要把,项目中所有页面通用的资源,例如:reset.css,jq-ui.css,jq.js等,全部打包在一个js里面,可以叫初始化js,以后新页面就可以只引用这个js即可。
现状:index.html
<head> <link href = 'https://www.haobala.com/wenda/css/reset.css'> //所有页面通用 <link href = 'https://www.haobala.com/wenda/css/jq-ui.css'> //所有页面通用 <link href = 'https://www.haobala.com/wenda/css/index.css'> //单独这个页面的css<head><body> //页面代码…… //页面代码……</body><srcipt src='https://www.haobala.com/wenda/js/jq.js'></script> //所有页面通用<srcipt src='https://www.haobala.com/wenda/js/index.js'></script> //单独这个页面的js想要改成:index.html
<head><link href = 'https://www.haobala.com/wenda/css/index.css'> //只保留单独这个页面的css<head><body> //页面代码…… //页面代码……</body><srcipt src='https://www.haobala.com/wenda/js/init.js'></script> //想要封装好通用init的js,以后可以通用<srcipt src='https://www.haobala.com/wenda/js/index.js'></script> //只保留单独这个页面的jsinit.js
(function(){ var reset_css = document.createElement(’link’), jq_js = document.createElement(’script’); //加载通用的css reset_css.href = 'https://www.haobala.com/wenda/css/reset.css'; //加载通用的js jq_js.src = 'https://www.haobala.com/wenda/js/jq.js';}())问题:
页面资源加载顺序问题
其中reset.css必须在最开始加载。----实际情况,DOM渲染完了才加载的,没用了
jq.js,因为所有页面的js依赖jq,必须jq先加载完后,再加载页面的js。----实际情况,页面js先加载了,报错了。
求教:如果想实现上述想要的结果,应该怎么写,能保证请求外部src,href资源按照想要的顺序加载呢?就是依赖的必须css,js必须在页面的js执行之前,加载完后再执行。
有查过文件监听事件、onload,但是我页面中通用的东西有点多,怎么样写保证全部初始化资源加载完后再去加载呢?
common_file1.onload = function(){ common_file2.onload = function(){common_file3.onload = function(){return}return }//再去加载每个页面中的单独需要资源吗? 这样写感觉好傻 /(ㄒoㄒ)/~~ }
问题解答
回答1:不知道你打包是采用gulp还是webpack, 可以试着引入gulp-order类似的插件
回答2:我大概记得就是按照顺序打包。就好了。