node.js 探究之路
1、mac下安装node.js
xcode-select -p //检查是否安装xcode,如果出现路径,说明已安装 xcode-select -install //安装xcode /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" //安装homebrew,官网:https://brew.sh/index_zh-cn.html brew install node //使用HomeBrew安装nodejs npm intall -g n //安装n模块到全局,从而控制node版本
2、node启一个web服务器
新建node_test目录,内部创建server.js文件,写入一下代码,
终端执行:
$ cd node_test/imooc/beginning $ node server.js
注意: 每次修改 response.end('Hello Worldn') 返回的内容时,都要在终端执行" ctrl+c "停止当前服务,再重新启动 "node server.js"。
3、node模块系统
在node.js中,文件和模块是一一对应的。
(1)、模块流程:
(2)、module.exports和export区别:
module.exports = add; //特别的对象类型;(推荐使用,支持现有),module.exports最终返回给调用者; exports.add = add; //传统的模块实例;(exports是辅助方法),exports挂载属性和方法,然后把属性赋给module.exports;
4、node API 之 url
(1)、url.parse()
URL地址组成:
protocol:指定底层使用协议,http或ftp等 slashes:是否有协议的双斜线 host:http的IP地址或域名 port:端口 hostname:主机名 hash:哈希值,锚点 search:查询字符串参数 query:发送给http的数据,参数串 pathname:访问资源路径名 path:路径 href:超链接
URI :Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称。
其中,URL,URN是URI的子集。
(2)、url.parse(urlString,bool,bool): 将定位符解析成对象,识别无协议的url
第二个参数决定query部分以字符串返回还是以对象形式返回,默认为字符串返回即第二个参数默认为false;
以上图中设置为 true,看到的query是对象形式。
第三个参数表示在没有完整协议串的时候(即无http:,https:)的时候‘//’之后的字符如何解释,若为false即将‘//’之后的当做路径解释,若为true则会将‘//’与‘/’之间的字符串解释为主机
对比上图中加入第三个参数,发现pathname,paht,host,port,hostname都会不同。
(3)、url.resolve(): 将一个基本URL和指定超链接目标URL合并
(4)、url.format(): 将对象解析成定位符(也就是URL)
5、QueryString使用
(1)、querystring.stringify(obj,para1,para2)//将对象转化成url中query部分的形式(序列化)
参数:1.要转化的对象 2.参数之间的链接符(默认&)3.键与值之间的符号(默认=)
(2)、querystring.parse(string,para2)//将query字符串转化成对象(反序列化)
参数: 1.query字符串 2.链接符(默认&),如果不是‘&’,需要在参数中说明使用的符号,如下面的‘,’。 3.键与值之间的符号(默认=),如果使用的不是‘=’,需要在参数中说明使用的符号,如线面的‘:’。 4.参数的个数(默认最多1000个,0就没有限制)
(3)、querystring.escape(string)//文字转译
(4)、uquerystring.unescape(string)//反转译
5、HTTP