require模块化载入

1,模块化require的载入步骤

  1,一个总文件夹,,里面三个子文件夹 ,, 分别是

        

   2,common 里面是放一些公共方法和自己封装的方法     js里面是放自己的业务逻辑js文件和一些模块化的入口和模块化的配置文件   lib里面放的是一些库..和框架的引入地址

  3,

list.html<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <ul id="ul">

        </ul>
    </body>
    <script type="text/javascript" src="lib/require.min.js" data-main="js/main.js" data-path="js/list"></script>
</html>

  这里呢 前面的src是引入的模块化的载入工具,也称作为AMD规则,要模块化就得按他的规则来, data-main = "js/main.js"  ,这里是等模块化执行后执行的模块化入口文件 :就是你这个页面要执行的业务逻辑代码都在这里执行 , 后面的data-path="js/list" ,这个是你真正要引用的页面js文件,里面是写好的页面逻辑代码 , 也许你会问那我这个文件用的jq方法或者其他框架的方法呢, 这里不要着急慢慢往下看.

config.js//这个是模块化的配置文件
requirejs.config({   //这个是模块化的配置文件
    urlArgs : ‘v1.3‘,//版本号
    baseUrl : ‘/amd‘,//配置baseUrl,其他文件的路径都是相对于此路径
    paths : {    //配置短路径
        jquery : ‘lib/jquery.min‘,//获取jquery.min.js的短路径
        underscore : ‘lib/jquery-ui‘,//获取underscore.js的短路径
        common : ‘common/common‘,  //获取common.js的短路径,这个是我们用来存放公共使用的js文件
        jqueryui : ‘lib/jquery-ui‘ //获取juqery-ui.js的短路径
    },
    shim : {  //配置非amd规范 的模块和模块依赖
        jquery : {  //这里是配置有些不能识别的方法,不然会报错
            exports : ‘$‘ //有的AMD不能识别比如$符号
        },
        jqueryui : {  //这里是依赖 ,就是说jqueryui这个短路径是依赖于jquery来编写的
            deps : [‘jquery‘]  //这个是你要依赖的那种库或者框架的方法,也是用短路径的依赖方式
        }
    }
})

/*
 * 1.urlArgs : 里面的是版本号,版本号就是你写的这个版本的备注
 * 2.baseUrl : ‘/amd‘这个是配置那些文件的路径,意思是从/amd这个文件夹下面开始寻找你要配置短路径的文件地址
 * 3. paths 为什么要配置短路径呢,这是因为如果你有个模块要用到jq或者用到其他框架,那么你要引入的文件地址将会很长
如果我们这里配置好了,就直接用短的配置路径.
*  4.shim :{} 这里是配置非AMD规范的模块和模块依赖,具体的我编写到页面注释
*/

    这是配置模块化的各种信息,里面的注释信息也得很详细. 总的来说就是设置一些库与框架的引用名字的设置简写,方便后面依赖的设置 (所有的设置都是为了能更好的嵌套下一个步骤,和完美上一步).

  

main.js//main.js这里是html文件要加载js模块的入口
require([‘config‘],function(){
    var path = document.querySelector(‘[data-path]‘).dataset.path;//获取要加载的js路径,根据不同的页面加载不同的页面
    require([path],function(){  //这里是那些html文件引入main所真正引入的页面方法

    });
})

  这里就是模块化载入后第二载入的js文件啦,这里就是你这个html文件所要真正执行的文件 , 里面注释很清楚 ,var那段就是获取的html文件最后引入data-path那后面的值.

list.js文件//定义list模块 ,用来被manin执行

define([‘jquery‘,‘common‘],function($,common){  //这里是一个模块的开始标准写法,[]里面写的是你要依赖于那种插件或者框架在或者你
    //自己封装的公共方法,里面的参数是要被return出来的不然不能被使用
    var list = {   //模块化对象
        init : function(){ //要调用的初始化的函数
            this.bindEvent();    //执行的点击事件
            this.render();//页面渲染的初始调用
        },
        bindEvent : function(){   //点击事件的绑定
            $(‘#ul‘).on(‘click‘,‘li‘,function(){ //给父元素绑定点击事件,因为li还没加载出来,用事件托管
                var index = $(this).index();  //获取这个点击的li的下标
                location.href = ‘detail.html?index=‘+ index;  //点击跳转的页面,加上点击的这个li的下标
            })
        },
        render : function(){     //页面渲染的事件
            var htmlStr = ‘‘;   //定义一个空来接收字符串li
            for(var i=0;i<5;i++){   //循环出5个li
                htmlStr += `<li>这是第${i+1}个li元素</li>`;  //把五个li的字符串赋值到htmlStr
            }
            $(‘#ul‘).html(htmlStr);   //把这个带有li的变量插入的ul里面
        }
    }
    list.init();  //这里执行要渲染和初始化的事件
});

    这里就是页面的业务逻辑文件,里面也有详细注释

  

//定义detail模块

define([‘common‘,‘jquery‘,‘jqueryui‘],function(common,$){   //模块的标准写法,[]里面要用到的方法

    var datail = {   //模块化对象
        init : function(){  //初始化函数
            this.render();    //执行页面渲染
        },
        render : function(){   //页面渲染方法
            var index = common.getUrlParam(‘index‘)  //获取网址里面的下标getUrlParam(方法是自己封装的)
            $(‘#p‘).html(`你点击的是第${Number(index)+1}个li元素`); //把这个添加到html里面
            $(‘#date‘).datepicker();  //这是juqeryui的一个日历方法
        }
    }
    datail.init(); //调用初始化的函数
})

      这是页面二要引入的业务逻辑文件,也就是点击跳转页面要引入的文件

<!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="p"></p>
        <input type="text" name="date" id="date"/>
    </body>
    <script type="text/javascript" src="lib/require.min.js" data-main ="js/main.js" data-path=‘js/detail‘></script>
</html>

      这个就是页面2所有的内容和引入的文件格式 , 有人可能会纳闷有的地方为什么不要.js后缀 , 这是因为这歌模块化工具会帮我们添加进来,如果你不想麻烦他还不行,还给你报错 , 我觉得这些嵌套关系最容易错的地方就是链接的地址的问题了,很容易出错,所以要仔细在仔细..

    

原文地址:https://www.cnblogs.com/gfweb/p/9531826.html

时间: 2024-10-14 13:56:09

require模块化载入的相关文章

require&#39;模块化jquery和angular问题

require 模块化开发问题,正常自己写的模块 是exports 导出一个模块 //模块化引入jquery 不同和问题 require 引入jquery swiper .... 插件和库的时候需要 require.config({ baseUrl:"js/libs", //文件夹目录相对与html的位置 paths:{ 'jquery':"jquery-1.9.1" //插件或库的文件名 'swiper':"文件名/swiper" //当每个插

require 模块化

需要引入require.js文件 (自行百度如何引入) 1.创建一个配置文件 config.js 引入需要的文件,路径要正确 举个栗子: 2.在页面调用的 js 文件中引入需要用到的文件名称 需要引用config.js文件 注:要先调用require.js 然后在调用其他 .js 文件 原文地址:https://www.cnblogs.com/sunyang-001/p/10921863.html

JavaScript 模块化入门Ⅰ:理解模块

作为一名JS初学者.假如你听到了一些诸如"模块化构建&模块化载入" "Webpack&Browserify" 或者 "AMD&CMD"之类的术语,肯定瞬间就凌乱了. JavaScript的模块化听起来挺深奥,可其实理解它对开发者来说特别实用. 在这篇文章里,我会尽量深入浅出地把这些深奥的术语翻译成浅显易懂的人话(加上一些代码示例).希望你多少能从中学到点东西. 为了避免长篇大论,整个内容会分为两篇文章,这是第一部分,主要介

浅析 Nodejs 模块化

本文只讨论 CommonJS 规范,不涉及 ESM 我们知道 JavaScript 这门语言诞生之初主要是为了完成网页上表单的一些规则校验以及动画制作,所以布兰登.艾奇(Brendan Eich)只花了一周多就把 JavaScript 设计出来了.可以说 JavaScript 从出生开始就带着许多缺陷和缺点,这一点一直被其他语言的编程者所嘲笑.随着 BS 开发模式渐渐地火了起来,JavaScript 所要承担的责任也越来越大,ECMA 接手标准化之后也渐渐的开始完善了起来. 在 ES 6 之前,

PHP文件包含语句 include、include_once、require、require_once

1.include() include(/path/to/filename) include()语句将在其被调用的位置处包含一个文件.包含一个文件与在该语句所在位置复制制定文件的数据具有相同内容的效果. 使用include()时可以忽略括号. 可以根据条件来执行include()语句.在条件语句中使用include()有个怪现象,它必须包围在语句块大括号中,或者用其他语句包围符括起来. 2.include_once() include_once(filename) include_once()函

include、include_once、require、require_once其区别

1.include: 载入文件.未找到文件,则产生E_WARNING 级别的警告错误,脚本继续运行. 2.include_once: 与include 语句作用相同,区别只是如果该文件已经被包含过,则不会再次包含. 3.require: 载入文件.未找到文件,则产生E_COMPILE_ERROR级别的致命错误,脚本中止执行. 4.require_once: 与require 语句作用相同,区别只是如果该文件已经被包含过,则不会再次包含. 5,include和require的区别: 前者加载失败,

php经典面试题

1.PHP语言的一大优势是跨平台,什么是跨平台?一.PHP基础: PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配置,不受操作系统的限制,所以叫跨平台 2.WEB开发中数据提交方式有几种?有什么区别?百度使用哪种方式? Get与post两种方式 区别:1. Get从服务器获取数据,post向服务器传送数据 2. Get传值在url中可见,post在url中不可见 4. Get传值一般在2KB以内,post传值大小可以

art-template引擎模板

art-template简介 artTemplate(后文简称aT)才是模板引擎,而TmodJS(后文简称TJ,曾用名atc)则是依赖于前者的一款模板预编译器.两者都是由腾讯开发.其实aT完全可以独立使用,而TJ存在的意义是提供了一个对模板进行预编译的环境(基于NodeJS和模块化).有了TJ,aT可以支持按目录的方式存储模板.以include的方式对指定目录中的模板进行调用(注意:这里的include和aT中的include不一样,后者只能引用同一页面中的不同模板标签).自动监控模板变化与自动

2017php经典面试题

1.PHP语言的一大优势是跨平台,什么是跨平台?一.PHP基础: PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配置,不受操作系统的限制,所以叫跨平台 2.WEB开发中数据提交方式有几种?有什么区别?百度使用哪种方式? Get与post两种方式 区别:1. Get从服务器获取数据,post向服务器传送数据 2. Get传值在url中可见,post在url中不可见 4. Get传值一般在2KB以内,post传值大小可以