requirejs avalon.js requirejs
avalon自带加载器也就是说可以像requirejs那样加载JS,事实上并不是这样,它也就只能加载自家的插件如mmRouter.js或者mmState.js如果你想加载jquery会报错,说明avalon自带的加载器是累赘。就连作者本人司徒正美也不推荐使用了在avalon2.0中也已经废除了。
作者推荐使用:webpack
这么高大尚的东西还需要安装nodejs环境才能使用,我们也可以选择requirejs来使用。
<script src="require.min.js"></script> <script> require.config({ paths: { avalon: 'avalon.shim' //注意这里为avalon自定义名称也只能是自定义为"avalon",因为avalon内部早就自定好了,jquery也是一样的也只能是"jquery" }, shim: { 'avalon': { exports: "avalon" //将avalon对象暴露出来 } } }); require(["domReady!","jquery","avalon","mmRouter"], function() { //domReady!是等待DOM加载完毕后在运行JS mmRouter是路由 document.title=avalon.version; //标题能输出 证明avalon能使用 var model = avalon.define({ $id:'test', currPath : "", params : {}, query : {}, args : "[]" }) //--------------以下代码能执行证明mmRouter路由也能执行成功了------------------------ function callback() { model.currPath = this.path+$('#jq').text(); // 能输出$('#jq').text()证明是DOM加载完成后执行JS的,也证明jquery能执行 var params = this.params if ("time" in params) { params.time = avalon.filters.date(params.time, "yyyy年M月dd日") } model.params = params model.query = this.query model.args = "[" + [].slice.call(arguments, 0) + "]" } avalon.router.get("/aaa/", callback) avalon.router.get("/bbb", callback) avalon.router.get("/ccc/:ccc", callback) avalon.router.get("/ddd/{time:date}/", callback) avalon.router.get("/eee/{count:\\d{4}}/", callback) avalon.router.get("/fff", callback) avalon.history.start({ basepath: "/avalon" }) avalon.scan(); }) </script> <div id="jq">测试jq</div>
domReady下载:domReady
用法1:
require(["domReady!"], function() { //加载DOM结束后JS代码执行这里 });
用法2:
require(["domReady"], function(domReady) { domReady(function(){ //加载DOM结束后JS代码执行这里 }); });