一:Http模块,Url模块
分别通过require('http'),require('url)导入Http模块和Url模块
使用
http.createServer()
方法创建服务器,并使用
listen
方法绑定
8888
端口。
函数通过
request, response
参数来接收和响应数据。
我们现在来看一下
request
里面能够使用的东西。
最关键的就是
request.url
属性,表示用户的请求
URL
地址。所有的路由设计,都是通过
req.url
来实现的。
我们比较关心的不是拿到
URL
,而是识别这个
URL
。
识别
URL
,用到了下面的 U
rl
模块
url模块常用的方法有三个,分别是parse() 解析模块,format() parse()操作的逆向操作,solve()添加或者替换地址,其中最常用的是parse()方法;
url.parse()第一个参数为一个url地址,我们通过设置第二个参数为true使得函数返回对象的query属性也为一个对象;不设置第二个参数默认为false,函数返回对象的query属性为一个字符串。话不多说,上图
这是没有设置第二个参数,默认为false的情况
![](https://i-blog.csdnimg.cn/blog_migrate/903ba658a46e818b7f0117a93ed68181.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1eac65d0fa28983a10607bdec95c2b8c.png)
这是设置了第二个参数为true的情况
![](https://i-blog.csdnimg.cn/blog_migrate/ef32729d71729eb0820107dee4a00503.png)
![](https://i-blog.csdnimg.cn/blog_migrate/71572926763cbf4dbc75e07f419fbdbd.png)
下面来看一个使用了Http模块和Url模块的综合应用场景
![](https://i-blog.csdnimg.cn/blog_migrate/231fec5c6beefa5d30f100d9d711f2a6.png)
在浏览器上运行
![](https://i-blog.csdnimg.cn/blog_migrate/d474d1d98fd4b2e97607a3dd374816d1.png)
二:node.js模块化
说到node.js模块化就不得不提到CommonJs,CommonJs就是模块化的标准,而node.js就是CommonJs(模块化)的实现。
下面来演示一下node.js自定义模块的导出和导入:
定义tools.js模块
![](https://i-blog.csdnimg.cn/blog_migrate/e74680264dd6dccdbe7afc4059fcd657.png)
在exports.js模块中导入并打印
![](https://i-blog.csdnimg.cn/blog_migrate/33654dd2cfd27583e3d3e21c1a06757d.png)
打印结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/0f54c54dfc3d776ecc675d626be269a9.png)
接下来我们换一种导出方式,使用module.exports。
![](https://i-blog.csdnimg.cn/blog_migrate/398d2cd521c915708fbf161d62ce47fc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/11451fb27ec2271b06dda329f2b74043.png)
直接就得了在tools.js模块中定义的obj对象
三:
npm init
生成
package.json,改变入口文件
在导入模块时,会先自动扫描node_modules文件夹,如果没有找到同名的才会按路径搜索
这是我的文件结构:
![](https://i-blog.csdnimg.cn/blog_migrate/4113c345d3bd8ae7fe398394a8c8b994.png)
![](https://i-blog.csdnimg.cn/blog_migrate/92f910262503be8a60d8eea6e4b903d9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e4aa7decfc7bcc01233874b4a53c06b3.png)
可以看到我写的路径在文件结构中根本找不到,但因为会先自动扫描node_modules包,所以成功运行
另外当我们导入一个包时,如果后面不接js文件名,会默认导入包下的index.js文件(如果有的话)
如图:
![](https://i-blog.csdnimg.cn/blog_migrate/24073594079564b1975b149a68de1899.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cf22b8853ab749062bcfec289bd0beca.png)
重点来了!!!我们可以通过
npm init
生成
package.json,改变入口文件
首先通过终端进入该目录(./util),并输入npm init --yes指令
![](https://i-blog.csdnimg.cn/blog_migrate/2a667b2eb7b08742f71ac53b2f3af552.png)
进入该目录下生成的package.json文件并修改其中的main属性
![](https://i-blog.csdnimg.cn/blog_migrate/fb19b8238f03511873ce3c675a426848.png)
在require('./util'),导入的就是tool.js模块了
好了,第一天的学习笔记就总结到这,新手生疏的很,望各位大佬多多包涵