javascript规范(js)

EMCAScript规范

javascript语言实现,ES6规范(使用babel编译器将es6转换为es5,webpack只支持部分es6):

import "jquery";           //返回function
export function doStuff() {}
module "localModule" {}

es5:

var o = require('s.js');

export default只有一个,export可以有多个

commonjs规范

nodejs语言实现

require("module");
require("../file.js");     //require返回对象 object
exports.doStuff = function() {};
module.exports = someValue;

浏览器不兼容nodejs,需要通过browserify工具转换为浏览器支持js (例如:browserify main.js > compiled.js): 浏览器不兼容nodejs的几个模块

  • module
  • exports
  • require
  • global

AMD(异步加载模块,npm中requirejs模块)

require同步==》异步require([module], callback); //由require.js和curl.js实现

网页js的异步加载 <script src=“js/require.js” defer async=“true” >

内部函数

  • require.config({参数}) //自动加载模块
require.config({
    baseUrl: "js/lib",
    paths: {
      "jquery": "jquery.min",
      "underscore": "underscore.min",
      "backbone": "backbone.min"
    }
  });
  • define([’’],function(){}) //指明依赖模块和定义模块
  • 加载非amd规范的模块,shim
require.config({
    shim: {             //shim配置不兼容模块
      'underscore':{           //不兼容的库名称
        exports: '_'
      },
      'backbone': {                  //不兼容的库名称
        deps: ['underscore', 'jquery'],
        exports: 'Backbone'
      }
    }
  });

CMD

淘宝工程师编写seajs,提出cmd规范

  • define(function(require, exports, module){})
  • seajs.use()

cmd和amd区别

define(function(require, exports, module){              //CMD
    var a = require(moduleA);
    a.dosomething();
    var b = require(moduelB);
    b.dosomething();
});

define([moduleA, moduleB],function(a, b, require, exports, module){                //AMD
    a.dosomething();
    b.dosomething();
});

js模块化方案

seajs、requirejs(在线编译,amd和cmd编译器在浏览器中) webpack、browserify(预编译)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券