





























网站的static目录下有如下子目录
.
├── css
├── img
├── js
├── myjs
└── sea-modules
sea-modules目录下的包都用spm install安装,首先是按包的名字建立各个子目录,每个包的目录里 每个版本再建立一个子目录,版本目录里存放具体的源文件,包括开发调试版本和生产环境的压缩版本。 如果要更新某个包的话也可以直接用spm来更新,然后sejs.config里可以随时切换版本,下面会看到。
这个目录下存放我们编写的js代码,要求全部符合seajs规范。 首先下面建立一个utils和stuff目录,分别存放每个单页面app所要用到的helper包和杂项包。 然后其它的目录基本上是一个子目录表示一个单页面app,单页面app用Backbone开发,每个app目录里面做如下约定。
每个app基本上是一个独立的个体,实现高内聚,尽量少的外部依赖。除了本目录内的view,model, tpl的依赖外,再就是第三方组件(Backbone,Mustache等)的依赖了和项目公共组件的依赖了如require('../utils/xxx.js')。
也就是说如果有多个app使用的共用代码,也保存在myjs目录下,并建立子目录进行命名空间划分,如stuff,utils,xxxhelper等。 这样下来一个网站有很多个app,整个文件目录也很有条理,不会乱。
每个app里的这个文件做一些seajs的配置和app的引导,大致如下。
seajs.config({
alias: {
"underscore": "underscore/1.4.4/underscore-debug",
"backbone": "backbone/0.9.2/backbone-debug",
"mustache": "mustache/0.5.0/mustache-debug",
"cookie": "cookie/1.0.2/cookie-debug",
"moment": "moment/1.7.2/moment-debug"
},
preload: ['seajs/plugin-text'],
map: [
['.tpl', '.tpl?201304261457'],
['.js', '.js?201304261457']
]
});
seajs.use(['/static/myjs/add-domain/app'], function(main){
$(function(){
main.init();
});
});
原则上是可以把每个app打包成一个js文件,以减少http请求次数。 但以前折腾过好久,在github上发了很多个issue,也没理解为啥打出来的包各种不能用。 我在app目录下建立了一个package.json
{
"name":"app",
"output":{"app.js":"."}
}
执行spm build --src . 竟然提示不能加载../utils/utils.js,我手工把app.js里的../修改成http://www.cnblogs.com/再执行,能打包成功了。 然后我把main.js里修改成seajs.use(['/static/myjs/domains/dist/app-debug']),结果打包后的模块导出的不是app.js,而是utils.js,根本没有init方法。 总之spm打包各种问题,所以再次放弃了,就调试模式跑吧。
不会。
.
├── css
│ ├── bootstrap.css
│ ├── bootstrap.min.css
│ ├── bootstrap-responsive.css
│ ├── bootstrap-responsive.min.css
│ └── main.css
├── img
│ ├── global_sprite.png
│ ├── glyphicons-halflings.png
│ ├── logo.png
│ └── simple.png
├── js
│ ├── bootstrap.js
│ ├── bootstrap.min.js
│ ├── china-zh.js
│ ├── highcharts.src.js
│ ├── jquery-1.8.2.min.js
│ ├── jquery.vector-map.css
│ ├── jquery.vector-map.js
│ ├── jquery.zclip.js
│ └── ZeroClipboard.swf
├── myjs
│ ├── add-domain
│ │ ├── app.js
│ │ ├── domains-view.js
│ │ ├── domains-view.tpl
│ │ ├── main.js
│ │ ├── records-view.js
│ │ └── records-view.tpl
│ ├── charthelpers
│ │ ├── chart.js
│ │ ├── chinamap.js
│ │ ├── isp_chart.js
│ │ ├── region_chart.js
│ │ └── time_chart.js
│ ├── day_report
│ │ ├── app.js
│ │ ├── main.js
│ │ ├── template.tpl
│ │ └── view.js
│ ├── domains
│ │ ├── app.js
│ │ ├── domains.tpl
│ │ └── main.js
│ ├── stuff
│ │ └── moment-zh-cn.js
│ └── utils
│ ├── data_map.js
│ └── utils.js
└── sea-modules
├── backbone
│ └── 0.9.2
│ ├── backbone-debug.js
│ ├── backbone.js
│ └── package.json
├── cookie
│ └── 1.0.2
│ ├── cookie-debug.js
│ ├── cookie.js
│ ├── package.json
│ └── src
│ └── cookie.js
├── jquery
│ └── 1.8.3
│ ├── gallery
│ ├── jquery-debug.js
│ ├── jquery.js
│ └── package.json
├── marked
│ └── 0.2.4
│ ├── marked-debug.js
│ ├── marked.js
│ └── package.json
├── moment
│ └── 1.7.2
│ ├── moment-debug.js
│ ├── moment.js
│ └── package.json
├── mustache
│ └── 0.5.0
│ ├── mustache-debug.js
│ ├── mustache.js
│ └── package.json
├── seajs
│ └── 1.3.0
│ ├── package.json
│ ├── plugin-base.js
│ ├── plugin-text.js
│ ├── sea-debug.js
│ └── sea.js
└── underscore
├── 1.4.2
│ ├── package.json
│ ├── underscore-debug.js
│ └── underscore.js
└── 1.4.4
├── underscore-debug.js
└── underscore.js
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。