全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

require.js中的define函数详解

前言

模块不同于传统的脚本文件,它良好地定义了一个作用域来避免全局名称空间污染。它可以显式地列出其依赖关系,并以函数(定义此模块的那个函数)参数的形式将这些依赖进行注入,而无需引用全局变量。RequireJS的模块是模块模式的一个扩展,其好处是无需全局地引用其他模块。 RequireJS的模块语法允许它尽快地加载多个模块,虽然加载的顺序不定,但依赖的顺序最终是正确的。同时因为无需创建全局变量,甚至可以做到在同一个页面上同时加载同一模块的不同版本。

在定义一个模块的时候,方法的第一行写一个“use strict”;这是干什么的?

use strict --严格模式,这种模式使得Javascript在更严格的条件下运行。

  • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
  • 消除代码运行的一些不安全之处,保证代码运行的安全;
  • 提高编译器效率,增加运行速度;
  • 为未来新版本的Javascript做好铺垫。

1. 简单的值对模块

其实就是把文件名称作为name参数传入,若依赖该组件那么返回的就是一个对象!

define({
 name: "hehe",
 age: "18"
});

2. 简单的函数模块

和上面一样文件名称作为默认的name,与上面的差异是,可以提前执行返回值外的代码

define(function() {
 return {
 name: "hehe",
 age: "18"
 };
});

3. 依赖函数模块

define([
 'angular',
 'jsUtil',
 'modules/meet/modules',
 'modules/meet/services/Meet',
 'modules/meet/services/MeetRemoteService'
],function(require) {
 'use strict';

 var module = angular.module('meet.services');

 module.factory('MeetService', function(Meet, MeetRemoteService) {
 var service = {
  name: 'hehe',
  age: '18'
 };
 return service;
 });
});

和上面一样,关键是依赖模块是以返回值作为入参的形式传入,如果加载错误或者没有找到对应的模块,那么得到的入参是Undefiend,需要注意!

4. 返回函数模块

define([
 'angular',
 'jsUtil',
 'modules/meet/modules',
 'modules/meet/services/Meet',
 'modules/meet/services/MeetRemoteService'
],function(require) {
 'use strict';

 var module = angular.module('meet.services');

 module.factory('MeetService', function(Meet, MeetRemoteService) {
 var service = {};
 service.getWeekOfMeet = function(weekFlag, date) {

  return MeetRemoteService.get(weekFlag, date).then(function(data) {
  data.content = Meet.sortMeet(data.content);
  return data;
  });
 }
 return service;
 });
});

和上面一样,这里返回的是函数,在依赖模块中把他作为函数对象调用即可,其实这是一个简单的闭包!

5. 完整定义

define('sample3' ,['sample','sample1'],function (sample,sample1) {
 var sample4 = require('sample4');
 return function(){
 alert(sample.name+':'+sample.sayhell());
 } 
});

这就是完整定义,有名称,有依赖,有回调,内部还有common的形式引入依赖对象!

关于define函数的name和require函数的依赖名称之间的关系

define(name,[] , callback); 这个name可以省掉,默认是文件名称;当然也可以自定义,一旦我们定义了name,根据源代码我们可以发现define函数内部其实就是把这个name以及依赖模块、回调函数作为一个对象存储在全局的数组当中,也就是 defQueue.push([name,deps,callback]);那么这个name就是这个组件注册的的ID!

require([name , name2],callback); 系统首先会在全文检索path中是否对应的路径,如果没有自然把他作为路径拼接在baseUrl上去异步加载这个js文件,加载时从源代码中可以看到 ,var data = getScriptData(evt);返回的 data.id 其实就是name,然后执行contex.completeLoad(node.id) ,其内部就很清楚了,把define中注册的name和这里得到的name进行比较如果相等就执行。所以道理就是:require 和 define 的 name 必须保证一致!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# require.js  # define  # require.js的define  # require  # define的用法  # js Date()日期函数浏览器兼容问题解决方法  # 一个Js文件函数中调用另一个Js文件函数的方法演示  # Mysql5.7中JSON操作函数使用说明  # JS中把函数作为另一函数的参数传递方法(总结)  # 使用javascript函数编写简单银行取钱存钱流程  # 加载  # 之处  # 把他  # 回调  # 源代码  # 返回值  # 的是  # 这是  # 全局变量  # 多个  # 这就是  # 会在  # 我们可以  # 这是一个  # 如果没有  # 可以看到  # 自定义  # 作为一个  # 它可以  # 很清楚 


相关文章: Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  平台云上自助建站如何快速打造专业网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何在橙子建站上传落地页?操作指南详解  如何快速重置建站主机并恢复默认配置?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  网站制作报价单模板图片,小松挖机官方网站报价?  如何用已有域名快速搭建网站?  如何在万网自助建站平台快速创建网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  深入理解Android中的xmlns:tools属性  宝塔建站无法访问?如何排查配置与端口问题?  如何在云虚拟主机上快速搭建个人网站?  jQuery 常见小例汇总  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何快速使用云服务器搭建个人网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何通过可视化优化提升建站效果?  如何快速搭建响应式可视化网站?  如何在云主机上快速搭建网站?  如何快速搭建高效简练网站?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  大连网站设计制作招聘信息,大连投诉网站有哪些?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  建站之星备案是否影响网站上线时间?  如何获取PHP WAP自助建站系统源码?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何快速搭建安全的FTP站点?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在阿里云高效完成企业建站全流程?  广东企业建站网站优化与SEO营销核心策略指南  图册素材网站设计制作软件,图册的导出方式有几种?  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何高效完成独享虚拟主机建站?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  制作企业网站建设方案,怎样建设一个公司网站?  如何在Tomcat中配置并部署网站项目?  宝塔面板如何快速创建新站点?  建站之星Pro快速搭建教程:模板选择与功能配置指南  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。