nodejs的第一天学习笔记
一、 js的模块化
什么是模块化:
模块化的概念最早是后台,随着ajax技术的兴起,js在编程中所占的地位越来越高,同时js的文件也相应的越来越多。为了方便文件的管理和更新,提出了js文件的模块 化,将同一类型的功能组合在一起
二、 模块化的演变过程:
1. 普通的方法的书写格式。
问题:多个人开发可能会造成变量污染,为了解决这个问题引出2
2. 使用对象的作用域来解决变量污染问题
问题:如果在这个对象中有一些属性不希望被外界访问到,
不能实现这个效果,为了解决这个问题,引出3
3. 使用函数的方式来私有化变量
问题:每次使用的时候都需要重新创建对象,为了解决这个问题引出了4
4. 使用函数的自执行模式来代替 new 操作
问题:没有问题,但是要考虑到扩展性,引出了5
5.使用一个自执行函数在原来的对象上扩展方法
注意点:将来自执行的时候要进行传参,这个参数需要做一个处理(window.calc || {})
6如果将来要用到第三方模块,我们需要将模块名写在自执行函数的参数上。
三、 第三方模块化管理工具:
1. seajs:
什么seajs:第三方模块化管理工具
学习网址:seajs.org
特点:
1) seajs 遵循CMD 规范
2) node.js一般书写模块化代码
3) 依赖的自动加载、配置的简洁清晰
作用步骤:
1) 要定义一个单独的模块:
关键字: define
define(function(require,exports,module){
//定义的代码块
})
2) 要在模块中返回一些方法/属性/对象
关键字:exports/module.exports
3) 如果要引用一个第三方模块:
关键字:require
var add = require('./add.js');
注意点:将来通过require关键字引用了其它模块化以后,会返回引用模块化的一个对象:exports/module.exports
4) 使用seajs 定义好的模块
关键字:seajs
seajs.use('./calc/calc.js',function(obj){
//注意:回调函数中的obj对象指向中是当前引用的模块calc.js模块中的exports/module.exports
//使用加法
console.log(obj.add.add(,));
//使用减法
console.log(obj.sub.sub(,));
})
注意:回调函数中的参数就是当前引用模块的exports对象
2. seajs遵循的规范:CMD规范
CMD规范的作用:规范明确了模块的基本书写格式和基本交互规则
a.cmd规定在define中可以传入方法,对象,字符串
b.cmd规定require用于接收第三方包提供的接口
require在使用的时候要注意以下几点:
1.0拼写正确
2.0不要修改
3.0使用直接量
c.cmd规定exports用来向外提供模块接口
d.cmd规定module.exports用于向外提供模块的接口
遵守CMD规范的模块都有一个特点:按需要加载特点(懒加载)
3.require 的使用
简单使用:基本与seajs一样
require 使用的AMD规范。
CMD与AMD基本相同,最大区别是CMD是懒加载,AMD是预加载
补充:
(1)requirejs与seajs使用基本相同
有两点要注意:1)seajs使用模块时用方法Seajs.use,而requirejs直接用require关键字
2)seajs只使用一个模块时可以只传一入字符串,但是require必须是一个数组
(2)懒加载与预加载
预加载模式:当第一次访问时将所有的文件加载出来
优点:第一次访问完成以后,再次访问的速度会很快
缺点:第一次加载页面要等待很久
懒加载模式:使用的时候才会加载对应的文件
优点:第一次访问速度相对快点
缺点:再访问其它新的模块是速度会变慢
nodejs的第一天学习笔记的更多相关文章
- [未完成]WebService学习第一天学习笔记
[未完成]WebService学习第一天学习笔记[未完成]WebService学习第一天学习笔记
- 20165326 java第一周学习笔记
第一周学习笔记 一.理论视频学习 1.Java的特点:简单.面向对象.平台无关 2.Java的开发步骤&简单的应用程序: 文本编辑器写入代码 命名类名.java,文件类型所有文件,编码ANSI ...
- 《Linux内核分析》第一周学习笔记
<Linux内核分析>第一周学习笔记 计算机是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/c ...
- linux内核分析第一周学习笔记
linux内核分析第一周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...
- Spring实战第一章学习笔记
Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...
- Nodejs --我自己的学习笔记
对于Nodejs,相信客官并不陌生,网上却已众说纷纭,有人说是一个平台,有人说是服务器JavaScript,有人说一个框架… 之前亦有过研究,多怀可远观而不可亵玩也.高效率,I/O操作,异步编程,以及 ...
- linux就该这么学 第一天学习笔记
题外话 在每天的网上冲浪中,一次无意间的点击,发现了linux就该这么学的网站,然后就看了一晚上,当时还是学生的我特别想要参加培训,可是碍于眼前的经济状况,只得将这个想法深深的藏在了心里,并加了一下网 ...
- nodejs的socket.io学习笔记
socket.io学习笔记 1.服务器信息传输: 2.不分组,数据传输: 3.分组数据传输: 4.Socket.io难点大放送(暂时没有搞定): 服务器信息传输 1. // send to curre ...
- Day1 《机器学习》第一章学习笔记
<机器学习>这本书算是很好的一本了解机器学习知识的一本入门书籍吧,是南京大学周志华老师所著的鸿篇大作,很早就听闻周老师大名了,算是国内机器学习领域少数的大牛了吧,刚好研究生做这个方向相关的 ...
随机推荐
- js Memoization 优化运行速度
项目中需要用到 大计算量 耗时的js运算. Memoize 是一个优化方法 ,对耗时的递归运算,漫长的查找运算的结果进行缓存,使运行时间最小化 原理是缓存先前的结果计算值从而可以避免需要重新计算 ...
- python 常用模块 Top200
名次 模块名称 被使用项目数 1 sys 7858 2 os 6983 3 re 5663 4 time 5268 5 random 3339 6 datetime 3310 7 setuptools ...
- Python开发【杂货铺】:五个知识点搞定作用域
1.块级作用域 想想此时运行下面的程序会有输出吗?执行会成功吗? #块级作用域 if 1 == 1: name = "lzl" print(name) for i in range ...
- Oracle的日期时间范围查询
Oracle日期时间范围查询 Sql代码 /* 日期时间范围查询 */ ---------- 创建日期时间测试表-------------------------------------------- ...
- postgresql运维
0. 帮助 $/home/lhl/az/pg/bin/pg_ctl --help pg_ctl is a utility to initialize, start, stop, or control ...
- jQuery源代码学习之八——jQuery属性操作模块
一.jQuery属性模块整体介绍 jQuery的属性操作模块分四个部分:html属性操作,dom属性操作,类样式操作,和值操作. html属性操作(setAttribute/getAttribute) ...
- Hadoop学习笔记: MapReduce Java编程简介
概述 本文主要基于Hadoop 1.0.0后推出的新Java API为例介绍MapReduce的Java编程模型.新旧API主要区别在于新API(org.apache.hadoop.mapreduce ...
- 51CTO专访淘宝清无:漫谈Nginx服务器与Lua语言
http://os.51cto.com/art/201112/307610.htm 说到Web服务器,也许你第一时间会想到Apache,也许你会想到Nginx.虽然说Apache依然是Web服务器的老 ...
- dede 数据库类使用列表
dedecms的数据库操作类,非常实用,在二次开发中尤其重要,这个数据库操作类说明算是奉献给大家的小礼物了. 引入common.inc.php文件 require_once (dirname(__FI ...
- C++复现经典游戏——扫雷
国庆小长假,当大家都去看人山人海的时候,我独自一人狂码代码.这两天想要实现的内容是Windows上的一个经典游戏——扫雷.相信90后和一些上班族对此并不陌生.然而,从win8开始,扫雷就不再是Wind ...