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

目录
相关文章
|
弹性计算 数据安全/隐私保护 Linux
不需要懂技术,3分钟幻兽帕鲁服务器搭建教程
幻兽帕鲁最近非常火。有些小伙伴可能不喜欢跟陌生人一起玩,那么你可以搭建一个专有服务器和朋友一起联机游戏。自己搭建服务器不仅更私密,还能自定义游戏里的一些选项,比如调整工作速度倍率、经验获取倍率等。 这篇教程将引导你在几分钟内快速完成幻兽帕鲁服务器的搭建。
40717 282
不需要懂技术,3分钟幻兽帕鲁服务器搭建教程
|
JSON JavaScript 前端开发
jQuery+Ajax+PHP无刷新分页
下载演示地址:http://www.erdangjiade.com/js/2.html 效果图: 本文使用jQuery+Ajax+PHP+Mysql,通过实例讲解如何实现Ajax无刷新分页效果。
1274 0
|
3天前
|
云安全 人工智能 自然语言处理
|
7天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
716 17
|
10天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
750 57
Meta SAM3开源:让图像分割,听懂你的话
|
8天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
329 116