专栏首页sofu456javascript规范(js)

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 条评论
登录 后参与评论

相关文章

  • 电脑投屏到小米盒子

      WiDi,需要英特尔Centrino Advanced-N 6200/6300/1000的无线网卡支持和显示适配器支持,在没有wifi网络的环境下可实现无限...

    sofu456
  • boost编译

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    sofu456
  • javascript基础学习

    Undefined、Null、Boolean、Number和String,Object

    sofu456
  • Swoft 2.0.3 重大更新,发布优雅的微服务治理

    Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架。Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传...

    桶哥
  • 开源推荐 - Swoft 2.0.3 重大更新,发布优雅的微服务治理

    Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架。Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传...

    猿哥
  • 指针与数组和函数的几个关系

    用户2929716
  • 中国有微信和支付宝, 你为啥还费力不讨好去做区块链? | 人物志

    他是一位连续创业者,曾在当时互联网最大二级市场票务平台悠闲地“打工”,生活无忧无虑无所求。一次偶然的机会,他“勾搭”上了一位澳洲技术男,异地畅聊、跨国面基之后,...

    区块链大本营
  • PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】

    多数人都是从单例模式的字面上的意思来理解它的用途, 认为这是对系统资源的节省, 可以避免重复实例化, 是一种”计划生育”. 而PHP每次执行完页面都是会从内存中...

    砸漏
  • 状态管理之Vuex (一) 基操勿六

    Vuex是对状态的管理, 这里的状态所指的就是data。 以前我们的组件通信一直是个问题,例如兄弟组件通信,这个时候就比较难办,如果使用Vuex就可以很轻松的解...

    憧憬博客
  • PancakeSwap JavaScript开发包

    PancakeSwap.js 开发包适用于为Web前端或Node.js应用快速增加对币安智能链PancakeSwap协议的支持能力。即支持使用自有部署BSC区块...

    用户5687508

扫码关注云+社区

领取腾讯云代金券