zoukankan      html  css  js  c++  java
  • [JavaScript] requireJS基本使用

    requireJS 是一个 AMD 规范的模块加载器
    主要解决的js开发的4个问题
    1. 异步加载,防止阻塞页面渲染
    2. 解决js文件之间的依赖关系和保证js的加载顺序
    3. 按需加载

    来实现一个 require 的实例
    目录结构如下:

    
    


    - 首先我们现在 require.html 中将 requireJS 引入

    <script type=”text/javascript” defer async=”true” src=”./require.js” data-main=”js/init.js”></script>

    > - 为了防止加载的时候阻塞,需要异步进行加载
    ( async=”true” defer) 其中 defer 是为了兼容 ie 不识别 async 的兼容写法
    当然还有简单粗暴的方法,直接将文件加载放在最后执行
    > - 同时写入 data-main=’js/init.js’,这会在 requireJS 加载完成的时候将统一目录下的 indexJS 加载进入
    或者可以使用两条 script 引入
    类似这样:
    ```
    <script type=”text/javascript” defer async=”true” src=”./require.js”></script>
    <script type=”text/javascript” defer async=”true” src=”js/init.js”></script>
    ```

    - 接下来,打开 init.js

    进入文件路径的配置,其中 paths 是在 lib 下面的文件地址,baseUrl 是修改默认的根目录,shim 是指定插件引入的依赖文件否则会报错(bootstrap’JavaScript requires jquery)
    同时,由于 require 默认后面的后缀是.js 所以我们不能再加后缀,否则会报错

    baseUrl用于定位根目录,其他路径都是相对根目录,
    paths用来执行文件,或者也可以用来定位新路径

    将jquery和underscore引入,写个窗口拖动变色
    ```
    //require.config主要是用来对要加载文件的目录进行自定义
    require.config({
    baseUrl: 'js',
    paths: {
    "jquery": "../lib/jquery",
    "undersocre": "../lib/underscore",
    }
    })

    require(['jquery', 'underscore'], function ($, _) {
    $(window).resize(function () {

    var color = ["rgba(", Math.floor(Math.random() * 255), ",", Math.floor(Math.random() * 255), ",", Math.floor(Math.random() * 255), ")"];

    $(".background").css({
    position: "fixed",
    top: "0px",
    bottom: "0px",
    left: "0px",
    right: "0px",
    background: color.join("")
    });
    })
    });
    ```
    ...有点闪眼

    - 注册一个模块
    新建js/color.js
    ```
    define(function () {
    var color = ["rgba(", Math.floor(Math.random() * 255), ",", Math.floor(Math.random() * 255), ",", Math.floor(Math.random() * 255), ")"];

    return {
    color: color,
    }
    });
    ```
    结构



    - paths定义别名
    新建js/common/date/date.js , js/common/date/format.js
    ```
    require.config({
    baseUrl: 'js',
    paths: {
    "jquery": "../lib/jquery",
    "underscore": "../lib/underscore",
    "date": "./common/date", //对层级深的起个别名
    }
    })

    require(['jquery', 'underscore', 'color', 'date/date', 'date/format'], function ($, _, c, d, f) {
    ......

    console.log(d.date);
    console.log(f.format(d.date))
    });
    ```

    
    

    [avascript模块化编程(三):require.js的用法]
    http://www.ruanyifeng.com/blog/2012/11/require_js.html
  • 相关阅读:
    Sphinx Search 学习 (一)
    求两个字符串最长子串的LCS算法 C语言实现(简短的实现函数)
    DPDK17.02入门手册
    DPDK2.1开发者手册4-7
    DPDK2.1开发者手册3-4
    DPDK2.1开发者手册1-2
    DPDK2.1 linux上开发入门手册
    深度优先搜索-linux上浅显易懂的例子
    多线程的电影
    数据对齐与代码优化笔记
  • 原文地址:https://www.cnblogs.com/mybilibili/p/6773952.html
Copyright © 2011-2022 走看看