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分钟幻兽帕鲁服务器搭建教程
幻兽帕鲁最近非常火。有些小伙伴可能不喜欢跟陌生人一起玩,那么你可以搭建一个专有服务器和朋友一起联机游戏。自己搭建服务器不仅更私密,还能自定义游戏里的一些选项,比如调整工作速度倍率、经验获取倍率等。 这篇教程将引导你在几分钟内快速完成幻兽帕鲁服务器的搭建。
40556 282
不需要懂技术,3分钟幻兽帕鲁服务器搭建教程
|
JSON JavaScript 前端开发
jQuery+Ajax+PHP无刷新分页
下载演示地址:http://www.erdangjiade.com/js/2.html 效果图: 本文使用jQuery+Ajax+PHP+Mysql,通过实例讲解如何实现Ajax无刷新分页效果。
1251 0
|
4天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1106 0
|
3天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
529 10
|
13天前
|
人工智能 运维 安全
|
12天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
4天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
301 0
|
11天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
807 23

热门文章

最新文章