require模块化开发教程

简介: 准备工作1.创建amd文件夹在amd文件夹内创建若干目录,如下:把需要用到的常用库文件放入lib文件夹内编码步骤创建list.

准备工作

1.创建amd文件夹

  1. 在amd文件夹内创建若干目录,如下:


    img_6e6bb39741f2d4271a236c14bbef51d0.png
  2. 把需要用到的常用库文件放入lib文件夹内


    img_53c5d84d5998100fb3b9c852e2a5a51e.png

编码步骤

  1. 创建list.html文件,代码如下
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script src="lib/require.min.js" data-main="js/main.js" data-path="js/list"></script>
    </body>
</html>

  1. config配置
requirejs.config({
    // 版本号
    urlArgs: 'v1.3',
    // 配置baseUrl,其他文件的路径都是相对于此路径
    baseUrl: '/amd',
    // 配置短路径
    paths: {
        jquery: 'lib/jquery.min',
        underscore: 'lib/underscore-min',
        jqueryui: 'lib/jquery-ui',
    },
    
    // 配置非amd规范的模块和模块依赖
    shim: {
        jquery: {
            exports: '$'
        },
        jqueryui: {
            deps: ['jquery']
        }
    }
})

  1. 把common.js改造成amd模块
/**
 * 把common.js改造成amd规范
 */
define(['jquery'], function($) {
    
    window.String.prototype.toFixed = function(n) {
        var num = Number(this);
        return num.toFixed(n);
    }

    var common = {
        // 开启loading
        loadingBegin: function() {
            var $loading = $('#loading');
            if(!$loading.length) {
                var htmlStr = `
            <div id="loading" class="loading">
            <p>
                <span class="circel">我</span>
                <span class="circel">最</span>
                <span class="circel">帅</span>
            </p>
            <p class="loadingText">努力加载中......</p>
        </div>`;
                $('body').prepend(htmlStr);
            } else {
                $loading.show();
            }
        },
        // 关闭loading
        loadingFinish: function() {
            setTimeout(function() {
                $('#loading').hide();
            }, 1000);
        },

        /**
         * name是你要获取的参数名称 
         */
        getUrlParam(name) {
            var query = window.location.search.substring(1);
            var vars = query.split("&");
            for(var i = 0; i < vars.length; i++) {
                var pair = vars[i].split("=");
                if(pair[0] == name) {
                    return pair[1];
                }
            }
            return(false);
        }
    }
    
    return common;
})
  1. 在config的paths里面加上common.js的配置
common: 'common/common'
  1. 修改main.js,使它可以根据不同的页面加载不同的js,代码如下:
/**
 * 1. 加载config
 * 2. 加载页面相关的js
 * 
 */

require(['config'], function() {
    // 获取要加载的js的路径
    var path = document.querySelector('[data-path]').dataset.path;
    require([path]);
})

  1. 修改list.html文件,代码如下:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <ul id="list">
            
        </ul>
        <script src="lib/require.min.js" data-main="js/main.js" data-path="js/list"></script>
    </body>
</html>

  1. 修改list.js文件,代码如下:
/**
 * 定义list模块
 */

define(['jquery', 'common'], function($, common) {
    
    var list = {
        
        init: function() {
            this.render();
            this.bindEvent();
        },
        
        bindEvent: function() {
            $('#list').on('click', 'li', function() {
                // 获取点击的li的下标
                var index = $(this).index();
                location.href = 'detail.html?index=' + index;
            })
        },
        
        render: function() {
            var htmlStr = '';
            for (var i=0;i<5;i++) {
                htmlStr += `这是第 ${i+1} 个li元素`;
            }
            $('#list').html(htmlStr);
        }
    }
    
    list.init();
    
})
  1. 创建detail.html,代码如下:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
<link href="https://cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet">
    </head>
    <body>
        <p id="detail"></p>
        <!--jquery-ui日期组件-->
        <input type="text" name="date" id="date" />
        
        <script src="lib/require.min.js" data-main="js/main.js" data-path="js/detail"></script>
    </body>
</html>

  1. 创建detail.js 代码如下:
/**
 * 定义detail模块
 */

define(['common', 'jquery','jqueryui'], function(common, $) {
    
    var detail = {
        
        init: function() {
            this.render();
        },
        
        render: function() {
            // 获取点击的li的下标
            var index = common.getUrlParam('index');
            $('#detail').html(`你点击的是第 ${Number(index)+1} 个li元素`);
            // 添加日期选择框
            $( "#date" ).datepicker();
        }
    }
  detail.init();
})

代码地址:require简易教程

目录
相关文章
|
缓存 API C++
|
移动开发 API Python
Python re模块 —— 从零基础开始入门正则表达式
Python re模块 —— 从零基础开始入门正则表达式
130 0
|
监控 Java Python
Python 正则表达式实战之Java日志解析
Python 正则表达式实战之Java日志解析
203 0
|
数据采集 数据挖掘 Unix
【Python 基础教程】优雅的拿捏正则表达式
【Python 基础教程】优雅的拿捏正则表达式
171 0
【Python 基础教程】优雅的拿捏正则表达式
|
存储 缓存 自然语言处理
python 模版引擎 Mako 源码阅读
Mako 是用Python编写的模板引擎。从概念上讲,mako是一种嵌入式Python(即Python Server Page)语言,模版被编译成Python代码,使用python解释器执行。mako用于外网热门网站 reddit.com ,同时也是Pylons和Pyramid Web框架默认模板语言。学习mako,可以帮助我们加深对python编译和执行的理解。
573 0
python 模版引擎 Mako 源码阅读
|
存储 前端开发 JavaScript
werkzeug源码阅读-完结篇
Werkzeug是一个全面的WSGI Web应用程序库。它最初是WSGI实用程序各种工具的简单集合,现已成为最高级的WSGI实用程序库之一,是Flask背后的项目。
502 0
werkzeug源码阅读-完结篇
|
数据采集 Python
python爬虫的正则表达式(re模块)
在python爬取网页的时候可以使用re语法来进行操作,通过import导入的方式
|
JavaScript 前端开发 开发者
中文代码示例之Vuejs入门教程(一)
中文代码示例教程之Vuejs入门, 记录过程中碰到的问题. Rewrite sample codes in Vuejs official guide by using Chinese naming as much as possible, and take notes of issues found.
986 0
|
JavaScript 前端开发
中文代码示例之Vuejs入门教程(一)问题后续
前文"中文代码示例教程之Vuejs入门"碰到的问题的解决. Solutions to the issues found when rewriting sample codes in Vuejs official guide by using Chinese naming as much as possible.
931 0
|
大数据 Linux Python
Python全栈 正则表达式(re模块正则接口全方位详解)
re模块 Python Python re模块 re模块正则接口全方位详解 Python正则基础
2057 0