JSON

seajs实用教程(三) 生产环境(2)

字号+ 作者:H5之家 来源:H5之家 2015-11-24 19:19 我要评论( )

最后看一下手动合并的最终代码 //main.jsdefine('dist/main',['dist/spinning'],function(require) {var Spinning = require('dist/spinning');var s = new Spinning('#container'); s.render();});//spinning.jsde

最后看一下手动合并的最终代码

//main.js define('dist/main',['dist/spinning'],function(require) { var Spinning = require('dist/spinning'); var s = new Spinning('#container'); s.render(); }); //spinning.js define('dist/spinning',['jquery'],function(require, exports, module) { var $ = require('jquery'); ... });

当然这还没有结束,还需要在做下压缩代码。

手动合并让我们更加清楚知道生成module_id,合并的原理,下课时我们就来看看如何使用grunt来进行文件合并。

使用 Grunt 作为 seajs的 构建工具

使用构建工具来做 进行合并、调整、压缩工作,相信大家对grunt都有所了解,不了解的话百度之。

根据上一课时说的 seajs 工作原理,我们其实想让构建工具完成的是以下的几个事情

seajs 提供以下 grunt 的插件来 构建 项目

grunt-cmd-transport(用于将匿名函数转为 具名函数) grunt-cmd-concat(根据文件中的 id 自动 拷贝对应目录文件的内容到 同一文件下)

那么我们来尝试使用grunt。

package.json:

{ "name": "hello", "version": "1.0.0", "author": "jackness Lau", "devDependencies": { "grunt": "0.4.1", "grunt-cmd-transport": "0.1.1", "grunt-cmd-concat": "0.1.0", "grunt-contrib-copy": "^0.7.0", "grunt-contrib-uglify": "0.2.0", "grunt-contrib-clean": "0.4.0" } }

使用 npm install 获取需要使用的grunt插件

Gruntfile.js:

module.exports = function(grunt) { grunt.initConfig({ /** * step 1: * 将入口文件拷贝到 产出目录 */ copy: { dev:{ files:{ "static/js/dist/main.js":["static/js/src/main.js"], "static/js/dist/spinning.js":["static/js/src/spinning.js"] } } }, /** * step 2: * 创建一个临时目录 * 将需要合并的js文件转为具名函数,并保持独立地保存在这个临时目录 */ transport: { dev: { options: { // 是否采用相对地址 relative: true, // 生成具名函数的id的格式 默认值为 {{family}}/{{name}}/{{version}}/{{filename}} format: './static/js/{{filename}}' }, files: [{ // 相对路径地址 'cwd':'static/js/', // 需要生成具名函数的文件集合 'src':['dist/main.js','dist/spinning.js'], // 生成存放的文件目录。里面的目录结构与 src 里各个文件名带有的目录结构保持一致 'dest':'.build' }] } }, /** * step 3: * 将临时目录下独立的具名函数文件 合并为 1个 js 文件 * 将这个合并的 js 文件 拷贝到 我们的输出目录 */ concat: { dev: { options: { // 是否采用相对地址 relative: true }, files: { // 合并后的文件地址 'static/js/dist/main.js': ['.build/dist/main.js'] } } }, /** * step 4: * 压缩 这个 合并后的 文件 */ uglify: { dev: { files: { 'static/js/dist/main.min.js': ['static/js/dist/main.js'] } } }, /** * step 5: * 将这个临时目录删除 */ clean: { build: ['.build'] } }); grunt.loadNpmTasks('grunt-cmd-transport'); grunt.loadNpmTasks('grunt-cmd-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.registerTask('default', ['copy','transport', 'concat','uglify','clean']);

};

下来执行grunt 不出差错的话,会在static/js目录下生成一个dist目录,里面包含了合并但没压缩的spinning.js和合并且压缩好的main.min.js。

修改hello.html

seajs.use("./static/js/dist/main.min.js", function() { console.log("init"); });

这里使用的grunt-cmd-transform和grunt-cmd-concat版本上都有点老,大家可以尝试使用最新版本做下。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  • Android中JSON数据格式读取解析创建视频教程

    Android中JSON数据格式读取解析创建视频教程

    2016-02-05 19:00

  • HttpClient 4.3教程 第一章 基本概念

    HttpClient 4.3教程 第一章 基本概念

    2016-01-26 16:49

  • 实用的javascript小技巧

    实用的javascript小技巧

    2016-01-25 19:05

网友点评