avalon学习笔记(五)

来源:互联网 发布:淘宝网店宝贝描述模板 编辑:程序博客网 时间:2024/06/05 11:34

五,搭建一个工程环境

到此,基础的理论都搞得差不多了,是时候做个实际的例子

换个教程,根据《avalon学习教程》系列--1、引入avalon》建立一个新项目。

我用的vs2013community

首先open->web site,指向一个空目录

新建两个folder,一个modules,一个reference

Modules里存放网站的一个一个模块,reference里面放上我们要用到的第三方库,比如avalon,还有常用的requirejsjquery等等

按照例子里说的,用到了avalon(我打算用modern版本),requirejs(及其插件domreadycsstext),jquery

因为用到了requiredomreadyavalon里自带的就可以删掉了。

因为用的是modern版,需要仿照shim版改一下

AMD加载器开始,都注掉,然后把shim里的end开始的代码拷过来。

然后把文件名里的modern去掉,还叫avalon

然后是作为入口的两个文件

Index.html

<!DOCTYPE html><html><head>    <title>avalon练习</title>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width">    <script src="Reference/require/require.js" data-main="main.js"></script>    <style>        .ms-controller {            visibility: hidden;        }    </style></head><body ms-controller="root">    <div>{{header | html}}</div>    <div ms-include-src="page"></div>    <div>{{footer}}</div></body></html>

有几个东西还是值得注意下

首先是引到了requirejsdata-mainrequirejs的属性,指明了最外层的js

然后,把body分成了三个部分,分别绑定了headerfooterheader还是按html的格式来解析。

中间用了一个叫page的模板

Style应该是用来保证画面不闪出绑定前的内容,这个入门教程里有提。

然后是main.js

require.config({//第一块,配置    baseUrl: '',    paths: {        jquery: 'Reference/jquery/jquery-2.1.3',        avalon: "Reference/avalon/avalon",//必须修改源码,禁用自带加载器,或直接删提AMD加载器模块        text: 'Reference/require/text',        domReady: 'Reference/require/domReady',        css: 'Reference/require/css'    },    priority: ['text', 'css'],    shim: {        jquery: {            exports: "jQuery"        },        avalon: {            exports: "avalon"        }    }});require(['avalon', "domReady!"], function () {//第二块,添加根VM(处理共用部分)    avalon.log("加载avalon完毕,开始构建根VM与加载其他模块")    avalon.templateCache.empty = " "    avalon.define("root",function(vm){        vm.header= "这是根模块,用于放置其他模块都共用的东西,比如<b>用户名</b>什么的",        vm.footer= "页脚消息",        vm.page= "empty",        vm.page2="empty"    })    avalon.scan(document.body)    require(['./modules/testModule/test'], function () {//第三块,加载其他模块        avalon.log("加载其他完毕")    });});

主要都是requirejs的格式,这个需要看requirejs的文档,大概就是给每个js设定一个名字,然后直接在js里引用名字就可以了

第一块,是requirejs的配置

第二块,就是rootviewmodel定义

第三块,是加载别的模块了,我这里起名字叫testModule

每个模块应该至少包括一个html和一个js,所以新建两个文件,一个test.html,一个test.js,放到testModule文件夹下

test.html

<div ms-controller="testVM">    <input ms-duplex="value" />{{value}}</div>

test.js

define(["avalon", "text!./test.html"], function (avalon, test) {    avalon.templateCache.test = test    avalon.define("testVM",function(vm){        vm.value= "test text"    })    avalon.vmodels.root.page = "test"})

avalon.templateCache.test = testavalon.vmodels.root.page = "test"这两句话很关键。

avalon.templateCache.test = test是说把test.html加入到templateCache里,并定义个名字叫test

avalon.vmodels.root.page = "test"是说把一开始在main.js里定义的rootpage属性改成刚才定义的test

这样,test.html里的内容就可以在index的第二个div里显示出来了。

Ok,到此为止,用avalon结合requirejs就生成了一个简单的网站开发工程环境

可喜可贺,可喜可贺



0 0
原创粉丝点击