服务端开发 node.js

前言:

什么是JavaScript

Javascript是一门运行在浏览器端的脚本语言。

JavaScript的运行环境是?

浏览器

javaScript 可以用来做什么

在浏览器端,主要是使用js来实现DOM操作。

  • 表单验证
  • 实现一些特性和动画
  • 更好的组织页面的结构(tab选项卡、轮播图)
  • 可以使用ajax来提升用户体验
  • 页游

换句话说,就是JavaScript脱离了浏览器,上述功能也就不存在了。

浏览器中的JavaScript 不可以做什么?

作为一门编程语言,js和其他语言(c、c++、c#、java、php)相比,它不能干什么?

  • 文件操作

  • 网络编程

  • os相关操作

  • 数据库操作

于是在2009年,Ryan正式推出了基于JavaScript语言和V8引擎的开源Web服务器项目,Node.js。Node第一次把JavaScript带入到后端服务器开发。

因为node的出现,JavaScript可以脱离浏览器运行,浏览器的一些限制当然也没有了,部分功能也就不存在了,比如:操作dom!

运行在node上的JavaScript可以做什么呢?
  • 可以制作命令行工具(所谓命令行工具就是通过dos命令来操作的软件)
  • 可以做服务端的开发 (基于node可以开发服务器应用,就像php一样)

什么是Node.js

官网:https://nodejs.org/en/

中文网站:http://nodejs.cn/

  • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

  • Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

  • Node.js 的包管理器 npm,是全球最大的开源库生态系统。

node.js是一个运行环境,和浏览器是同等地位。node.js这个运行环境是基于chrome v8引擎的,在浏览器端写的那些和浏览器环境无关的代码,在node.js中,也是同样支持的。

Node.js可以做什么?

使用Node.js可以轻松的进行服务器端应用开发。

具体来说,体现在两个方面:

  • webapp(网站)

  • 命令行(包括命令行工具和交互式终端程序)

既然已经有了java、PHP等后台语言,为何还需要Node.js?

  • io密集型 — 异步io操作
  • 实时web应用 ---- socket.io

实时web应用:双十一、12306、游戏、在线客服/咨询

nodejs的特点

  • 单线程 (JavaScript 特点:程序按照连续顺序排下来,前面的必须处理好,后面才会执行。)
  • 异步式I/O(非阻塞式) (当有多个任务需要执行,所需耗时为多个任务中最高耗时(同步编程,为多个任务耗时总和)
  • 事件驱动机制 (根据当前出现的事件,调动资源进行相关的处理)
  • 跨平台

JavaScript 和 node.js 区别

过去js有两个名称:

  1. ECMAScript版本号 (官方)
  2. Javascript(民间)

ECMAScript才是语言本身。

ECMAScript语言在不同的环境中,分别对应于不同的叫法:

  • 在浏览器端执行的ECMAScript,称之为javascript
  • 在服务端执行的ECMAScript,称之为node.js
  • 在flash palyer中执行的ECMAScript,称之为ActionScript

在这里插入图片描述
一般说js,就是指浏览器端的javascript(ecmascript)
一般说node.js,就是指服务端的javascript(ecmascript),但是node.js本身是运行环境。

小结:

Node.js是一个基于chrome v8引擎的运行环境。在运行环境中,可以执行js代码,同时结合这个环境提供的api,就可以实现服务端的编程。

和浏览器端的js对比:
浏览器端是一个运行环境,在这个运行环境中,可以执行js代码,同时结合这个环境提供的api(就是BOM和DOM),就可以实现DOM操作。

关键词:
非阻塞:https://blog.csdn.net/TalonZhang/article/details/88414752

为什么 JavaScript 是单线程 ?
JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript 不能有多个线程呢 ?这样能提高效率啊。

JavaScript 的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript 的主要用途是与用户互动,以及操作 DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript 同时有两个线程,一个线程在某个 DOM 节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?

i/o 是指 input/output,输入和输出,文件操作。

掌握命令行基础指令

  • cls md cd dir PATH
    • cls 清屏
    • md 创建文件夹 make directory
    • rmdir 删除空文件夹 remove directory
    • dir 查看文件目录
    • cd 转换路径
    • cd … 转到上一级目录
    • path 查看当前全局环境中的所有路径

命令行运行程序过程

当在命令行输入一个命令(node)的时候,首先在命令行定位的路径下查找输入的命令程序(node.exe|node.cmd|node.bat|node.shell)找到就运行它,找不到就去全局环境变量path存储的路径中依次查找,如果没有就报错了(node)不是内部运行命令

Created with Raphaël 2.2.0 开始 输入node命令 当前路径查找node.exe 找到? 执行 找Path 找到? 报错 yes no yes no

关键词:
非阻塞:https://www.jianshu.com/p/22c27f827304

结束语:
你的微笑定格成永久,你的笑声 刻在我心头,我就站在 滚滚红尘的洪流,依然等着你回眸。

发布了121 篇原创文章 · 获赞 151 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/feifanzhuli/article/details/90724386