首先认识requirejs requirejs是个包加载器,核心功能是模块化管理,可以实现按需加载. 重点是明白 模块化不是按需加载. 模块化的意义: 是通过代码逻辑表明模块之间的依赖关系和执行顺序,按照模块逻辑来分解代码,起到配合mvc框架架构项目的作用. 按需加载:顾名思义 根据需要 通过模块依赖  event事件  加载所需的模块. 因为做的本地混合应用,在我项目中的主要的作用是模块化,我使用requirejs的原因是模块化管理,不是按需加载. backbone 配合 requirejs…
Marionette牵线木偶,Backbone是脊骨的意思,Marionette是基于Backbone做扩展库,可以理解为把脊骨骨架绑线扯着变成牵线木偶动起来哈哈,使backbone更易使用呵呵! 构建或者扩展了很多新的东西,如:Application,Region,ItemView,CollectionView,CompositeView,LayoutView,AppRoute,Controller等等,把很多重复性的工作变成配置,程序入口引入了集中处理器Application,貌似Mario…
给Angularjs配上Requirejs 需要考虑的事情: 1.js.css.template都按需加载,js主要就controller: * js和css都可以用requirejs和它的插件解决, * template就直接用Angular route的异步加载,虽然很想把它和controller的js合并在一起,不过还是放弃了: 2.所有的router还是单独写在一个文件里,虽然他们也可以分散,但总觉得放一起一目了然会比较好管理:由于router在配置的时候controller是必须指定的…
使用RequireJS模块化后代码被拆分成多个JS文件了,在部署生产环境需要压缩合并,RequireJS提供了一个打包压缩工具r.js来对模块进行合并压缩.r.js非常强大,不但可以压缩js,css,甚至可以对整个项目进行打包. r.js的压缩工具使用UglifyJS或Closure Compiler.默认使用UglifyJS(jQuery也是使用它压缩).此外r.js需要node.js环境,当然它也可以运行在Java环境中如Rhino.JAVA环境使用Ant构建可以参考另外一篇RequireJ…
看到一篇关于AngularJS Backbone Ember.js的对比,建议看一看 说说个人的观点(本人学艺不精,只是个人的观点,不保证观点完全正确,请轻拍): backbone.js 短小精悍,非常的灵活,其实拿它跟另外两者比某种程度上不太恰当,另外两者提供的是非常完整全面的框架,Backbone他所提供的正像是他的名字一样backbone,适用于较小非企业级的应用 Ember.js (我使用的是早期1.4版本,无法确定新版本是否有改进,所以以下评论只是针对老版本)在之前的一个SPA中使用过…
1. JavaScript里面js代码的写法:目标是解决冲突和依赖 函数式编程,全局函数和变量--很容易覆盖 对象的写法--也会从外面改变 命名空间:利用名称不同缓冲js代码的冲突---名称太长,不方便维护 闭包--变量一直存在,垃圾回收机制失效,内存泄漏 模块化开发 函数式编程---->面向对象编码---->模块化编程(面向对象可以理解成深度的模块化) 2.COMMONJS规范.AMD规范.CMD规范 CommonJS 最开始是 Mozilla 的工程师于 2009 年开始的一个项目,它的目…
其实说成使用requirejs加载angularjs应用会更贴切一些 <body> <span ng-controller="homeController">{{resultValue.Msg}}</span> <script src="js/lib/require.js" data-main="js/main"></script> </body> 只不过需要手动启动angu…
关于angularjs.requirejs的基础知识请自行学习 一.简单事例的项目目录如下: -index.html -scripts文件夹 --controller文件夹 --- mianController.js --- controller1.js ---controller2.js --directives文件夹 ---mainDirective.js ---directive.js --app.js --router.js --main.js 二.首页 首先你的index.html大概…
1.模块的写法 模块化编程一般都有这么几个过渡过程,如下描述. 原始方法 function m1(){ //... } function m2(){ //... } 上面的函数m1()和m2(),组成一个模块.使用的时候,直接调用就行了. 这种做法的缺点很明显:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系. 对象写法 为了解决上面的缺点,可以把模块写成一个对象,所有的模块成员都放到这个对象里面. var module1 = new Object…
这个版本的TodoMVC中的视图组织划分比较细,更加易于理解,这也得益于Marionette为我们带来了丰富的视图选择,原生的backbone只有views,而Marionette则有itemview, collectionview, compositeview 和layoutview. js/templates.js /*global define */ define(function (require) {//这里用了简写,因为require.js是CommonJS 模块,相当于 defin…