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简易教程

目录
相关文章
|
C++ Python
137 python高级 - 正则表达式(re模块的高级用法)
137 python高级 - 正则表达式(re模块的高级用法)
82 0
|
Python
131 python高级 - 正则表达式(re模块操作)
131 python高级 - 正则表达式(re模块操作)
71 0
|
缓存 API C++
|
移动开发 API Python
Python re模块 —— 从零基础开始入门正则表达式
Python re模块 —— 从零基础开始入门正则表达式
131 0
Python程序开发——第十章 正则表达式(ヾ(•ω•`)o那么复杂的正则表达式看完这一篇就懂啦)
Python程序开发——第十章 正则表达式(ヾ(•ω•`)o那么复杂的正则表达式看完这一篇就懂啦)
Python程序开发——第十章 正则表达式(ヾ(•ω•`)o那么复杂的正则表达式看完这一篇就懂啦)
|
数据库 Python
【Python基础篇013】第壹章模块大全之《re模块》
【Python基础篇013】第壹章模块大全之《re模块》
149 0
【Python基础篇013】第壹章模块大全之《re模块》
|
存储 缓存 自然语言处理
python 模版引擎 Mako 源码阅读
Mako 是用Python编写的模板引擎。从概念上讲,mako是一种嵌入式Python(即Python Server Page)语言,模版被编译成Python代码,使用python解释器执行。mako用于外网热门网站 reddit.com ,同时也是Pylons和Pyramid Web框架默认模板语言。学习mako,可以帮助我们加深对python编译和执行的理解。
581 0
python 模版引擎 Mako 源码阅读
|
数据采集 数据可视化 Java
python基础—正则表达式即re模块!
正则表达式(regular expression),就是字符匹配模式,而这个匹配规则在我们写爬虫进行数据提取,或者进行数据可视化进行数据清洗时经常用到,多样化的匹配规则在复杂的字符的情况提取数据时助我们一臂之力;在Perl、java、C/C++等编程语言都支持;python是以re模块的形式支持的;
|
API Python
【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集
【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集
146 0
【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集
|
移动开发 固态存储 网络虚拟化
Python正则re模块学习笔记
Python正则re模块学习笔记