【前端构建】RequireJS及其优化东西

前端变化太快,如今RequireJS已没法吸收眼球了。
引见一款模块加载东西:RequireJS的入门,而且重点引见其优化东西。

一、RequireJS简介

RequireJS是一个代码模块加载器。
最陈旧的时刻,前端在开辟页面的时刻,平常情况下,都是在Html文件里一次把一切会用到的JavaScript文件经由过程<script>标签援用进来。

《【前端构建】RequireJS及其优化东西》

跟着前端项目愈来愈庞杂,这类体式格局带来了很多题目:

  1. 定名争执。在之前的项目里,经常为了定名争执,涌现很多相似 comm.utils.dialog的对象名。

  2. 文件依靠。比方上述代码,假如某开辟人员要挪用dialog.js,那末必需在此之前晓得它依靠于util.js,并在dialog.js之前援用util.js,不然会报错。

更细致的请看文章前端模块化开辟的代价(https://github.com/seajs/seajs/issues/54…

所以很多人去研讨模块化开辟,效果也不错。涌现了很多模块化计划和范例,如今有以下:

  1. 相符AMD范例,如RequireJS

  2. 相符CMD 范例,如SeaJS

  3. NodeJS范例 CommonJS

  4. ECMAScript 6的模块化

RequireJS就是相符AMD范例一种完成。

二、运用

官网下载RequireJS,并在页面中援用,即可享用RequireJS的一切特征。

从一个DEMO最先,此Demo没有很多逻辑,当加载某模块时在控制台打印该模块的称号。

《【前端构建】RequireJS及其优化东西》

以上是Demo的代码构造。

  • release:宣布目次

  • src:项目源代码

  • tools:东西目次,比方构建东西等。
    点击检察完全代码

DEMO代码剖析

  1. 进口文件,main.html
    暂疏忽release和tools目次,只关注src目次。

先看main.html

《【前端构建】RequireJS及其优化东西》
先引入了require.js,再引入设置信息config.js,末了是一段指导启动代码。此Demo的启动代码,在require函数的第一个参数里传入它所须要的模块,one和two,而不须要体贴它们离别依靠于什么

  1. 设置文件config.js
    引入require.js后,须要先举行设置,比方baseUrl是指加载资本时,是相对此途径的资本。

《【前端构建】RequireJS及其优化东西》

  1. 定义模块
    require函数的加载对象是模块,关于requireJS来讲,一个文件定义一个模块。那末怎样定义模块呢?

运用define函数定义,比方two.js里的代码是:

《【前端构建】RequireJS及其优化东西》

个中return的对象是该模块对外曝露的接口,挪用方require此模块后,可运用此对象所定义的一切要领和属性。

运转DEMO
运用Chrome运转src/main.html,前后初始化了three,one,two等三个模块。如下图

《【前端构建】RequireJS及其优化东西》

收集请求是如许的

《【前端构建】RequireJS及其优化东西》

main.html经由过程script标签加载require.js和config.js,然后启动代码经由过程require函数加载 one.js和two.js,two.js经由过程require函数加载它所依靠的three.js。

requireJs的入门要关注四样东西

  1. 页面援用 require.js

  2. 在运用require函数前,运用require.config要领设置途径等信息

  3. 运用require函数加载模块

  4. 运用define函数定义模块

三、优化东西

以上是RequireJS最基本的运用要领。然则,它还供应了优化东西,用于提拔机能,此优化东西为 r.js(http://requirejs.org/docs/optimization.h…

requireJS以为一个文件只能定义一个模块。然则,有些模块很小,离开文件来开辟虽然有利于源代码的保护和可读性,但却不利于浏览器环境下的加载,因而会有一些兼并代码的需求,行将几个模块兼并到一个文件里,比方假如一个工程里运用到了jquery和backbone等第三方代码库,而且又是经常一同运用的,那末在宣布之前就能够把它们兼并成一个文件。

别的,前端代码宣布前都邑举行紧缩,使文件充足小。因而,如今引见一下怎样运用r.js的优化东西完成此两点述求。

装置与运用

  • 下载r.js。

  • 装置NodeJS和NPM,官网去下载装置包即可

同样是上一节的Demo,我们要兼并one.js和two.js,同时紧缩一切的代码。
以下文件目次中
tools内里的r.js是优化东西的代码库;而build.js是设置文件
src/js目次下多了一个combine.js文件。此文件用于寄存兼并后的代码。

《【前端构建】RequireJS及其优化东西》

设置文件
优化东西依据设置文件举行优化,即tools内里的build.js。

《【前端构建】RequireJS及其优化东西》
设置选项有很多,概况请看
https://github.com/jrburke/r.js/blob/mas…

优化一:兼并文件

  1. 在src/js下新建combine.js,内容为空都能够。

  2. tools/build.js里设置要兼并的config.modules。

命令行cd到tools目次
实行 node r.js –o build.js

《【前端构建】RequireJS及其优化东西》
从输出的信息看来,combine.js兼并了one.js,three.js和two.js。
但我们在tools/build.js里明显设置的是兼并one和two。本来是因为two.js里require了three.js,所以优化东西把three.js也兼并进来了。那末假如我本意实在并不想把three.js兼并进来呢?

Rjs的兼并战略:传入define,require的模块参数假如是直接量就会兼并,假如是变量那末不兼并,比方
Two.js里require(‘three’)如许加载,three.js是会被兼并到combine.js的,而假如是var mod=”three”; require(mod),那末three.js是不会被兼并的。

优化二:代码紧缩
默许情况下,优化东西是会紧缩代码,然则假如某些情况下不想紧缩能够,在tools/build.js里关掉,即optimize选项设置为none。

运转效果
编译后的release目次文件:

《【前端构建】RequireJS及其优化东西》
运转release/main.html,同样在控制台打印了加载的模块称号,即完成了跟之前src/main.html一样的功用。
《【前端构建】RequireJS及其优化东西》

然则,不再零丁加载 one.js、two.js和three.js了,而是只加载 combine.js

《【前端构建】RequireJS及其优化东西》

至此完毕,只会用requireJS是不够的,优化东西会使你的顺序机能获得提拔。

而优化东西要用好,要多尝试他们的设置选项。http://requirejs.org/docs/api.html#confi…

我在深圳,迎接关注我的民众号
《【前端构建】RequireJS及其优化东西》

    原文作者:啃先生
    原文地址: https://segmentfault.com/a/1190000004728494
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞