-
var querystring=require('querystring'); var data={name:'zhangsan',age:89,from:''}; /** * querystring模块暴露的方法: * stringify//序列化; * parse//反序列化; * escape//转义; * unescape//反转义 */ //name=zhangsan&age=89&from= console.log(querystring.stringify(data)) //name=zhangsan,age=89,from= console.log(querystring.stringify(data,',')) //name:zhangsan,age:89,from: console.log(querystring.stringify(data,',',':')) //{ name: 'zhangsan', age: '89', from: '' } console.log(querystring.parse("name=zhangsan&age=89&from=")) //{ name: 'zhangsan', age: '89', from: '' } console.log(querystring.parse("name=zhangsan,age=89,from=",',')) //{ name: 'zhangsan', age: '89', from: '' } console.log(querystring.parse("name:zhangsan,age:89,from:",',',':')) //%E5%93%88%E5%93%88 console.log(querystring.escape("哈哈")) //哈哈 console.log(querystring.unescape("%E5%93%88%E5%93%88"))查看全部
-
url.parse url变成js对象 url.format js对象变成url url.resolve('主域名/','子路径名') 变成完整的url路径查看全部
-
如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时不会影响到原始值。 var obj = [1, 2, 3]; function f(o){ o = [2, 3, 4]; } f(obj); obj // [1, 2, 3] 上面代码中,在函数f内部,参数对象obj被整个替换成另一个值。这时不会影响到原始值。这是因为,形式参数(o)与实际参数obj存在一个赋值关系。 // 函数f内部 o = obj; 上面代码中,对o的修改都会反映在obj身上。但是,如果对o赋予一个新的值,就等于切断了o与obj的联系,导致此后的修改都不会影响到obj了。 上面说的主要是为了解释下面这段: 默认情况下,Node准备的exports变量和module.exports变量实际上是同一个变量,并且初始化为空对象{},于是,我们可以写: exports.foo = function () { return 'foo'; }; exports.bar = function () { return 'bar'; }; 也可以写: module.exports.foo = function () { return 'foo'; }; module.exports.bar = function () { return 'bar'; }; 换句话说,Node默认给你准备了一个空对象{},这样你可以直接往里面加东西。 但是,如果我们要输出的是一个函数或数组,那么,只能给module.exports赋值: module.exports = function () { return 'foo'; }; 给exports赋值是无效的,因为赋值后,module.exports仍然是空对象{}。 下面是廖雪峰同学的总结,也是比较偷懒的做法: 结论:直接对module.exports赋值,可以应对任何情况: module.exports = { foo: function () { return 'foo'; } }; 或者: module.exports = function () { return 'foo'; }; 最终,我们强烈建议使用module.exports = xxx的方式来输出模块变量,这样,你只需要记忆一种方法。 [慕课网评论框反人类的设计,气死我了]查看全部
-
一、nodejs.org看看nodejs的版本升级,新特性的加入,重要bug的修复等 二、www.npmjs.com模块社区,看他人源代码,省力 三、github.com大量的项目和源码 四、stackoverflow.com技术解答社区以及查询相关资源,环境配置,异常均可找到答案查看全部
-
this.通常指向当前函数的拥有着,称之为执行上下文 this本身是javascript的一个关键字,代表函数运行时自动生成的一个内部对象,只能在函数内部使用 执行上下文需要根据当前函数的执行对象而定,因为执行对象在函数运行时才能确定,且能动态改变 在全局执行上下文,this指向全局对象在函数内部,this取决于被调用的方式 1.作为对象的方法调用 pet.speack() 2.函数的调用,默认指向全局对象 3.构造函数 使用this 指向新构建好的对象查看全部
-
模块分为三类:核心模块、本地模块、第三方模块(通过npm安装)。核心模块会在Node启动时预先加载。 当使用名称来引用非核心模块时,Node.js会把文件名映射到对应的模块引用的路径。查看全部
-
Commonjs是一套规范,约定了js如何组织,如何编写。它把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,但模块不是孤立的,可能存在依赖关系。每个模块分为三个部分,定义、标识和引用。 Nodejs基于Commonjs实现了模块管理系统。Node中每一个js文件都是一个独立的模块,在其内部不需要有命名空间,同时模块之间可以组合形成更强大的模块或功能包。npm即是用来管理各种功能包的。查看全部
-
通过自己的理解这些问题 1.回掉,即后续处理的函数作为参数出现在前驱函数中,对前驱函数中的一些操作进行处理 去医院看病,得先去挂号,不管你是去看腰腿胳膊心肝肾,挂完号才能去对应的科室。如此你要挂号,是你要挂什么病,挂完就去看病,如果把看病当做参数给挂号,看病这件事就是回掉 2.同步与异步 挂号可以让票贩子挂自己回家睡觉,挂号这件事就是异步的 如果是非要自己半夜排队,那挂号这件事就是同步的 //同步 打电话 等待 查询 返回结果 挂电话 <br> //异步 打电话 留号码 说明查询 挂电话 出结果 回电话 完成<br> //同步 下载 等待 完成 看片儿<br> //异步 下载a 下载b 下载c 下载完播放提示音看片儿 顺序不定<br> 3.单线程/多线程 今天周日,人多,但是你还是一个人给自己挂号,你就是单线程的 本周日,漩涡鸣人用多重影分身给自己挂号,鸣人就是多线程的 4.i/o 磁盘的写入 挂号的时候护士把你的信息录入,这就是写入 磁盘的读出 你挂完号去看病,轮到你了,医生把你的信息调出来,82岁 未婚, 哦,大龄单身狗啊,这就是读出 5.阻塞/非阻塞 医生告诉你你得好好检查检查,然后对你一阵敲敲打打,你啥也干不了,只能被动享受,你就被阻塞了 医生拍个片子就让你滚回家,说看看,过两天电话通知你结果,你想干啥就干啥,你就是非阻塞的 6.事件/事件驱动<br> 医生过两天打电话告诉你,你得了蛋疼得切病,让你去医院,你就得去医院,这就是事件驱动 医生过两天打电话告诉你,你这玩意没切完,你又得去医院,这也是事件驱动 过两天医生告诉你不用切了,推荐你做变性手术,你没去,这事算完 ,ok 医生给你电话就是事件,你接到电话去医院也好,不去也罢,你一直被电话驱动着 7.事件循环 队列 你去挂的诊室有点多,有切蛋蛋的,有切咪咪的,有治疗菊花的,你的电话一个接一个,你有分身乏术,就按照取得顺序和执行时间拍了个顺序,顺便挂点其他的课科室,就这样 周一接电话去切蛋蛋,周二切咪咪,周三挂个前列腺号,前列腺一生的电话也留着监听监听,周四治菊花,周五本来说挂个号,但是周三前列腺的医生说你得去检查检查,你就去了,本来要挂的治疗没蛋也疼的只好拖到下周一了查看全部
-
域名解析->域名 ->缓存->根域dns->顶级域dns->本域dns->服务器IP 1.搜索浏览器自身DNS缓存,如果不存在或者过期(>60s)放弃 2.搜索操作系统自身的dns缓存 3.读取本地的HOST文件 4.浏览器发起一个DNS的系统调用 域名解析 5.客户端通过随机端口使用tcp协议服务器ip的80端口发起连接请求 三次握手 6.tcp/ip连接请求建立后浏览器可以向服务器发起http请求 7.http客户端发起请求,创建端口,解析用户操作,拼接请求头信息 8.http客户端并向服务器的该端口发送request头信息 9.服务器监听端口 如80 10.http监听到发到80端口的请求头信息 11.http服务器解析头信息 12.http服务器 按照请求头信息,返回相应响应头信息response 13.响应头信息发送给http客户端,客户端解析响应头信息,并完成其他操作 14.完成一次http请求查看全部
-
核心模块,本地模块(文件模块),npm的第三方模块。<br> 模块的引用:1,路径引用模块,2,文件名引用模块。 名称引用非核心模块时node.js会把文件名映射到对应的模块引用的路径。 包含核心函数的核心模块在node启动时预先加载,非核心以及第三方模块之后加载。查看全部
-
JS中容易出现变量被覆盖,方法被替代的情况(既被污染)。特别是存在依赖关系时,容易出现错误。这是因为JS缺少模块管理机制,来隔离实现各种不同功能的JS片段,避免它们相互污染。 为此我们经常采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行。jQuery中有许多变量和方法,但是无法直接访问,必须通过jQuery调用。 Commonjs不同于jQuery,Commonjs是一套规范,约定了js如何组织,如何编写。大部分标准在拟定和讨论之中,首先把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,但不是孤立的,可能存在依赖关系。每个模块分为三个部分,定义、标识和引用。这套规范与现实产品如node.js相互影响,良性循环。 nodejs基于commonjs实现了模块管理系统。node中每一个js文件都是一个独立的模块,在其内部不需要有命名空间,不需要担心变量的污染和方法定义时的隔离。同时模块之间可以组合形成更强大的模块或功能包。npm即是用来管理各种功能包的。查看全部
-
node本质上是js的一种执行环境,它跟浏览器有一些不同的全局变量 宿主:浏览器、node; 全局变量:浏览器-window、document;node - process; 进入node环境: node (回车)查看全部
-
//加载http模块,它的职责是负责创建web服务器,处理http相关的任务等等 var http = require('http'); var hostname = '127.0.0.1'; var port = 3000; /** * [通过createServer方法创建web服务器,请求进来之后,处理交给匿名的回调函数,] * @param {[type]} req [请求体,这次请求的URL、请求类型是get还是post等等] * @return {[type]} res [ 响应体,返回状态、文本类型和文本内容] */ var server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); /** * [通过listen方法监听请求] * @param {[type]} port [端口号] * @param {[type]} hostname [主机名] */ server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });查看全部
-
Homebrew — OS X 不可或缺的套件管理器。 nodejs 可以通过 brew 安装。 brew install node git mongodb 可以通过brew来一次性安装node、 git 、mongodb。 node -v 检查是否安装成功。 npm install -g n 将n安装到全局。 n 版本号 安装nodejs 指定版本。 n下切换node版本。查看全部
-
windows中安装node的方法: 安装Git Bash->安装NodeJS->打开Git Bash->node -v->npm -v https://git-scm.com/download/win https://nodejs.org/en/查看全部
举报
0/150
提交
取消