nodejs是干啥的(node.js – http、模块化、npm)
今天是node学习的第二天 ,其实越往后面学越感觉有点熟悉的味道了 ,光针对于node来说哈,为什么呢 ,因为我之前学过一点云计算的东西 ,当时感觉没什么用搞了下服务器客户端这些 ,没想到这里还能用一用 ,至少看到服务器这些概念一点不陌生 ,看到npm一点不奇怪 ,我当时用的都是yum 。
1.
我们今天先看到http模块 ,也是node里面的第一大模块 ,内置模块的内容 ,http是创建web服务器的模块,在前端当中 ,不需要iis 、Apache这些第三方服务器软件 ,只需要一个node.js提供的http模块就能够写一个服务器,这么一看 ,貌似node还多强大的 。
我们的服务器一般分为三个概念 ,ip 、域名、端口,有了这三个你就可以访问一个服务器 。
怎么来创建啊web服务器?
首先要导入http内置模块
const server = http.createServer()
这个创建了一个服务器实例 ,接下来还要对他绑定一个监听事件 ,能够监听到客户端发送过来的请求
server.on(request,(req, res) => {})
注意这个事件里面有两个参数 ,这两个参数代表什么意思我们后面再说 ,当你绑定完事件过后 ,就可以开启这个服务器了
server.listen(‘端口号’ ,callback)
这里面两个参数一个填端口号 ,一个是开启服务器后的回调函数 。
浏览器上访问 服务器过后就会在服务器的终端弹出来监听里面要打印的信息
1.1
我们接下来说一下监听事件里面两个参数到底是个什么?
首先第一个req对象 ,它是一个对象 ,包含了客户端相关的数据和属性,你要对访问进来的客户端记性操作的话 ,尽管用到这个对象里面的属性和方法即可
req.url是客户端请求的url地址 req.method是客户端的请求方式
1.2
然后是res对象 ,没错,他也是一个对象 ,这是包含了服务器相关属性和数据的对象
res.send()可以向客户端发送你想发送的内容 ,而且它代表着请求结束,如果发送的内容里面包含中文的话 ,还需要用到res来设置表头编码不然会出现乱码的现象
1.3
来一个案例 ,根据不同的url反映出不同的页面 ,这个应该很经典吧
2.
我们接下来看到模块化 ,模块化是指解决一个复杂问题的时候 ,自顶向下逐层把系统划分到若干模块的过程 ,对于整个系统来说模块是可组合 、分解和更换的单元 。
在我们编程世界里面 ,模块化就是遵守固定的规则 ,把一个大文件拆分成独立并相互依赖的小模块 ,大家分工合作 。
Node.js模块分类?
在我们node里面模块分为三个部分,第一个是内置模块:我们前面学的都是内置模块 ,fs 、path 、http等
第二个是自定义模块:什么叫做自定义模块 ,其实就是我们自己写的这个js文件他就是自定义模块
第三个是第三方模块:就是由第三方开发出来的模块,需要提前下载
然后 我们的模块都需要加载用到require
还会有模块作用域 ,也就是在我们自定义模块里面声明的变量函数 ,在外面的模块是访问不到的 。
那么有没有办法来访问呢?
是有的,向外共享模块成员的方法要用到一个module对象 ,它是每个js自定义模块都有的内置对象 ,然后在这里面有一个关键的对象 ,exports ,在我们前面 ,require这个自定义模块的时候得到的内容其实就是exports对象里面的内容 ,
所以说有时候为空 ,就是因为没给exports赋值 ,他就是一个空对象 ,我们在写的时候可以写成module.exports 也可以是exports
但是在模块化这里exports有几个要注意点的,始终要记住一点不管是exports还是module.exports他们虽然能完成一样的效果但是始终以为module.exports里面的数据为准 。
为了防止混乱 ,最好不要将exports和module.exports混用
模块化规范
node遵循的是commenJS模块化的规范 ,包括我们前面说的module代表当前模块,exports是对外的接口 ,require用于加载模块都是commenJS规范的 ,但是我vue入了一点门被劝回来的那里,刚好看到后面应该遵循的都是es6模块化规范了 ,这个commenJS逐渐要淘汰了 。
3
继续看到包和npm的一些内容 ,首先要明确什么叫包 ,第三方模块就叫包 ,包是由第三方个人和团队做出来的 ,都是免费的。
我们为什么要用包呢?
包是基于内置模块封装出来的 ,提提供了更高级 、更简便的用法 ,其实就相当于jQuery和浏览器内置对象的关系 ,jq的ajax方法就是通过xhr封装来的撒 。
npm
我们首先看到一个案例对时间格式化如果用我们的传统做法 ,也就是自定义模块的做法 。
这就完成了一个对于时间格式化的操作,舒适还是有点麻烦 ,但我们现在有了npm就不一样了 ,可以用npm安装一个moment的包,安装导入查看文档api这三步曲走起。
之前多少代码量 ,现在多少代码量 ,这就是为什么要用包 。
最后说一下当你安装了包后文件夹多多出两个文件一个node_modules的文件夹这里面存放的npm下载的包文件,一个是pachage_lock.json的配置文件这里面是前面文件夹里面所有npm下载的包的详细信息这两个都不能去修改
最后如果要安装指定版本的包的话只需要在包名的后面添加@版本号
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!