美文网首页让前端飞
前端模块化与RequireJS

前端模块化与RequireJS

作者: getElementsByMK | 来源:发表于2017-06-25 19:57 被阅读0次

模块化

模块化是什么?

为什么要使用模块化?

  • 为了更好地复用
  • 减少全局变量污染
  • 解决功能之间的依赖关系

模块化的实现方式

使用闭包来实现

  • 闭包实现存在的缺点
    • 随着功能的增加,暴露的全局变量也会越来越多
    • 不能很好的解决模块依赖的问题

使用主流的一些实现模块化的库来实现

  • requireJS
  • seaJS
  • browserify
  • webpack

requireJS

官方网站:

英文版:http://requirejs.org/
中文版:http://www.requirejs.cn/

入门

  1. 下载requirejs文件
  2. 引入requirejs文件
  3. 编写js代码
    • 在a.js文件中通过来定义一个模块(tip:约定一个js文件就是一个模块)
    define(function(){
      //模块内部的代码
    })
    
    • 在b.js文件中从而获取a.js中的代码,这样的话就可以保证在执行b.js中的代码之前先执行了a.js中的代码
    require(["./a.js"])
    

依赖注入:模块具有返回值:

  1. 给定义模块的回调函数添加return语句
//a.js文件中
define(function(){
    return 10;
})
//b.js文件中
define(function(){
    return {name:"张三"};
})
  1. 在获取模块的时候,通过require()的第二个参数来依次获取各个模块的返回值
require(["./a.js","./b.js"],function(a,b){
    console.log(a);//10
    console.log(b.name);//"张三"
})

入口文件

通过给引入requirejs时的script标签添加data-main属性值,那么requirejs就会自动加载该文件(模块),可以通过该文件来进行访问其他的模块

<script src="require.js" data-main="./main"></script>

路径(加载模块时遵循的规则)

  • 如果没有入口文件,加载模块时的路径以引入requirejs时的路径为准(优先级最低)
  • 如果有入口文件,加载模块的路径以入口文件为准(优先级次高)
  • 通过配置来自定义路径(优先级最高)
require.config({
    baseUrl:""
})

配置常用的模块路径(比如:jquery/arttemplate)

require.config({
    baseUrl:"./lib",
    paths:{
        //路径不需要.js后缀,最终该文件的路径将会和baseUrl拼接,也就是:"./lib/js/jquery-2.1.4"
        jquery:"js/jquery-2.1.4"
    }
})
//a.js文件中
define(["jquery"],function($){
    //这里请求的jquery也就是去上面paths中设置的jquery进行查找,也就是:"./lib/js/jquery-2.1.4"

})

如果一个js文件不支持AMD这种模块定义规范(比如bootstrap.js),但是它又依赖于我们定义的模块(jquery),通过以下方式来解决

require.config({
    baseUrl:"./lib",
    paths:{
        //路径不需要.js后缀,最终该文件的路径将会和baseUrl拼接,也就是:"./lib/js/jquery-2.1.4"
        jquery:"js/jquery-2.1.4",
        bootstrap:"assets/bootstrap/bootstrap"
    },
    shim:{
        bootstrap:{
            //这样在请求bootstrap的时候会自动去请求jquery模块
            deps:["jquery"]
        }
    }
})

相关文章

  • 前端基础建设之export、import使用

    背景知识 在ES6前, 前端就使用RequireJS或者seaJS实现模块化, requireJS是基于AMD规范...

  • 前端模块化与RequireJS

    模块化 模块化是什么? 为什么要使用模块化? 为了更好地复用 减少全局变量污染 解决功能之间的依赖关系 模块化的实...

  • 前端模块化(requirejs)

    前端模块化 什么是前端模块化 将代码依据不同功能,或者职责进行模块的划分,就称为前端模块化 模块化的好处 结构更轻...

  • requireJs

    requirejs模块化开发 -- AMD配置短名称 config.js引入requirejs

  • webpacke

    webpack 是一个【模块化管理工具】兼【打包工具】 是一个工具(和seajs,requirejs管理前端模块的...

  • webpack基本搭建

    webpack 是一个【模块化管理工具】兼【打包工具】 是一个工具(和seajs,requirejs管理前端模块的...

  • 【requirejs】手把手教你用requirejs重构你的项目

    “廉颇老矣,尚能饭否”,虽然requirejs古老了点,但是其前端模块化思想的思想值得我们深究! 初学者关于本文的...

  • 一个简单 vue+webpack 的配置和demo 2018.1

    第一步 1.2 前言 在我还在使用 requireJS 去管理模块化的 js 的时候,如今的前端三大框架 Reac...

  • (17.06.02)模块化定义、RequireJs下载/安装、E

    模块化:把大系统,较复杂的功能,进行切分。 RequireJs:一、安装、下载    官网: requirejs....

  • 使用requirejs搭建前端项目

    本文主要是讲述如何使用requirejs这个模块化管理工具来搭建前端项目结构,适合内网开发以及还在使用比较旧的技术...

网友评论

    本文标题:前端模块化与RequireJS

    本文链接:https://www.haomeiwen.com/subject/rlurcxtx.html