0%

node.js认知

2017年9月9日 下午10:27

概述

  1. node.js我只是作为一个知识的补充,没有深入的学习。需要使用的话可以参考文末最后给出的两个链接,上面有详细的入门教程
  2. node.js最有用的地方对我来说是,通过node.js让我了解的不同服务器脚本语言之间的比较,从事件机制和异步IO模型的角度去认知整个服务端。
1
NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。

通过node.js来了解整个web服务端面临的问题,以及部分解决方案

Node.js是用来做什么的? - 知乎
Node.js详细解析 - CSDN博客
这两篇文章说出了node.js在整个行业中的重要地位。

node.js学习日记

  1. 先说说我是怎么拐到node.js上面的。
  2. 我本来是是在学习javaWeb的MVC,我自然的就和ThinkPHP框架的CBD模式产生了联系,于是我就想再把自己对框架模式的知识面扩展一下。我找了一会,前面几篇写的我认为不好,当时突然我就看见了这篇界面之下:还原真实的MV*模式 · Issue #11 · livoras/blog · GitHub,我觉的这个人的水平可以,写的这篇文章也是言之有理,所以很是喜欢。
  3. 我先读完了一遍,心中还是有几个疑惑不懂得地方,毕竟自己知识有限,没有真正的见过使用这些模式的代码,于是就返回去把一些小的点努力思考了一下。其实这时候我知道这是很虚的,因为一个成熟的框架设计模式怎么能让我一下就能吸收了呢。于是我对自己提出了更高的要求—把作者给的源码也看看吧,我就得我js还可以,写不出来吧,看还是没问题的。于是我的噩梦就开始了。
  4. 我一开始真的以为就是js,还在不停的回想我总结的js的知识,尤其的面向对象的,但是心里总有说不出来的不舒服,我当时也没有太注意,只是翻来覆去的看,稍微懂点,但是也有很多不懂得地方(反过头来想,其实出现这种问题的原因就是js语言基础不好,这也是我以前说的,看源码的基础一定是你对语言有了比较深刻的了解之后才能做得),这时心中不断的提出问题,然后尝试给出答案,将我的猜测带入程序中去验证,最后就在不断地磨蹭当中,认为作者只是给了我们核心源码,他的调用啥的都有给,当时还在抱怨作者为啥这么懒。
  5. 本来分析到这也就差不多了,想mvc和mvp这两种模式我基本上时看懂了,但是对于其中的关键的观察者模式,我一直很疑惑,为啥我在view中就没有发现view是如何实现观察者模式的。我但猜测这是作者导入的那个库文件完成的。
  6. 我对自己说—走到这了不能放弃,把那个库文件也了解一下吧,看看他是不是来完成观察者模式的,验证一下自己的想法。这一查五雷轰顶,这是node.js的库文件,我把它当成js看了半天,天哪😲。我以前对node.js只是听说过,知道他可以代替php这些脚本语言,其他的啥都不知道了。
  7. 我这时竟然没有停下脚步,查了一下node.js手册Node.js 教程 | 菜鸟教程,随便看了看他的安装过程,最通俗的理解—node.js是为js在服务器端运行的一个环境,那么岂不是说其实就是在服务器端使用js完成php能完成的功能吗。
  8. 说道php了,那可是我的老本行,我真的很想把node.js和php进行对比。兴趣来了,我看的就带劲了。边看他的手册,边回忆自己php的知识,不断的碰撞(下面有我的一下简单的对比)。这时我返回去看作者的代码,发现原来作者把整个项目目录都给了,上层中还有很多文件,我找到我一直想看的调用这三个对象的一个总文件mvc.js(model对象,view对象,controller)。就在这时我在纠结一个问题—-view对象中涉及到了对html标签的控制,我就很疑惑这个html文件到底在哪里,难道设node.js本身就能配置,放在了一个地方,view对象和这个html文件是通过node.js中的配置文件完成的吗?我然后在项目中翻来翻去,去找那个配置文件,没有找到,百度出来都是有关app.js(后来我才知道这是express框架的的),脑子中一篇混乱。无意间我在mvc.html文件中找到了文件的最后引用了mvc.js这个文件。我懂了—-就像前台引入jQuery.js的道理一样啊。
  9. 我然后把作者代码中的那几个node.js中的库文件查了查,了解了一下他们的用途,此时心中背堵着的感觉慢慢下去了。但是,我提出了一个新的问题——你现在是node.js这个专门的解析js的环境下运行的这段代码,那么当真正用户从客户端浏览器访问的时候,这些node.js环境下的库文件,直接给了浏览器他能像你引入jQuery.js一样下载到本地进行解析吗?nodejs 怎样在浏览器中运行_百度知道这里和我说的疑惑一样。

与php的简单对比(肤浅)

  1. node.js的服务器启动尽然是运行自己写的.js文件来启动
  2. node.js中express框架中也有类似Echo的方法
  3. 每个页面.js文件是可以单独执行的和php一样
  4. Express还结合了框架的效果如模板引擎
  5. 一个.js文件可以是一个js对象,就像一个.php文件可以是一个php类

我查过的一些资料

重要的:七天学会NodeJSNode.js Express 框架 | 菜鸟教程
次要的:
module.exports用法 - xqnode的博客 - CSDN博客
eventEmitter总结 - 简书
Nodejs学习 2 — events事件处理EventEmitter - z742182637的博客 - CSDN博客
10分钟快速学Handlebars - CSDN博客
Vue.js 模板语法 | 菜鸟教程
剖析Vue原理&实现双向绑定MVVM - 前端足迹 - SegmentFault
Vue.js——轻量高效的MVVM框架(一、初识Vue.js) - DarkRanger - 博客园
使用Node.js完成的第一个项目的实践总结 - Node.js知识库
Handlebars 模板引擎之前后端用法 - 茄果 - 博客园