zoukankan      html  css  js  c++  java
  • nodejs(第一篇):nodejs是什么?JavaScript语言与node、nodejs的特点、nodejs可以做什么?安装nodejs

    一、nodejs是什么?

     

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

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

    简单的说 Node.js 就是运行在服务端的 JavaScript,利用JavaScript在服务端进行编程。

    Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触角伸到了服务器端,可以与PHP、JSP、Python、Ruby平起平坐。

    Node.js不是一种独立的语言,与PHP、JSP、Python、Perl、Ruby的“既是语言,也是平台”不同,Node.js使用JavaScript进行编程,运行在JavaScript引擎上(V8)。

    nodejs开发的构成就成利用npm开发的社区提供的大量的第三方包加上基本的ECMAScript脚本语言以及node平台提供的一系列编程接口进行编程。

    二、JavaScript语言与node

    JavaScript语言本身是指ECMAScript,语言本身不包含BOM、DOM,BOM、DOM是浏览器环境给JavaScript提供的编程接口对象,理论上DOM、window都是属于BOM。

    浏览器都有引擎,最少两个,一个是渲染引擎,一个是JavaScript解析执行引擎。

    Chrome V8引擎就是专门用来解析和执行JavaScript代码的。

    在所有浏览器中,Google chroome的V8引擎是最快的js脚本代码解析执行引擎。性能非常好

    以前的JavaScript就是只能在浏览器里运行,包含ECMAScript和BOM浏览器的东西。

    node不是一门新语言,他只是把chrome V8引擎移植到自己的环境当中,在这个环境之上构建了一系列的底层API,给ECMAScript提供了一些特定环境的编程接口。

    nodejs没有BOM、DOM。

    三、nodejs的特点

    1、node.js是一个平台,或者说是一个运行环境。

    2、node.js是一个基于Chrome JavaScript 运行时建立的一个平台,具体是基于Chrome V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

    3、node.js旨在提供一种简单的构建 快速、可伸缩网络程序的方法。

    4、使用事件驱动,非阻塞IO模型

    5、轻量、可伸缩,适用于实时数据密集的交互应用。

    6、单进程,单线程

    四、nodejs可以做什么?

    JavaScript解析器只是JavaScript代码运行的一种环境,浏览器是JavaScript运行的一种环境,浏览器为JavaScript提 供了操作DOM对象和window对象等的接口。Node.js也是JavaScript运行的一种环境,Node.js为JavaScript提供了操 作文件、创建HTTP服务、 创建TCP/UDP服务等的接口,所以Node.js可以完成其他后台语言(Python、PHP等)能完成的工作。

    1、Web开发:Express + EJS + Mongoose/MySQL

    express是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站。Express框架建立在Nodejs内置的Http模块上,并对Http模块再包装,从而实际Web请求处理的功能。

    ejs是一个嵌入的Javascript模板引擎,通过编译生成HTML的代码。

    mongoose是MongoDB的对象模型工具,通过Mongoose框架,可以进行访问MongoDB的操作。

    mysql是连接MySQL数据库的通信API,可以进行访问MySQL的操作。

    通常用Nodejs做Web开发,需要3个框架配合使用,就像Java中的SSH。

     

    2 、Web聊天室(IM):Express + Socket.io

    socket.io一个是基于Nodejs架构体系的,支持websocket的协议用于时时通信的一个软件包。socket.io 给跨浏览器构建实时应用提供了完整的封装,socket.io完全由javascript实现。

     

     

    3、 Web爬虫:Cheerio/Request

    cheerio是一个为服务器特别定制的,快速、灵活、封装jQuery核心功能工具包。Cheerio包括了 jQuery核心的子集,从jQuery库中去除了所有DOM不一致性和浏览器不兼容的部分,揭示了它真正优雅的API。Cheerio工作在一个非常简单,一致的DOM模型之上,解析、操作、渲染都变得难以置信的高效。基础的端到端的基准测试显示Cheerio大约比JSDOM快八倍(8x)。Cheerio封装了@FB55兼容的htmlparser,几乎能够解析任何的 HTML 和 XML document。

     

    4、 REST开发:Restify

    restify是一个基于Nodejs的REST应用框架,支持服务器端和客户端。restify比起express更专注于REST服务,去掉了express中的template, render等功能,同时强化了REST协议使用,版本化支持,HTTP的异常处理。

     

    5、 Web博客:Hexo

    Hexo是一个简单地、轻量地、基于Node的一个静态博客框架。通过Hexo我们可以快速创建自己的博客,仅需要几条命令就可以完成。

    发布时,Hexo可以部署在自己的Node服务器上面,也可以部署github上面。对于个人用户来说,部署在github上好处颇多,不仅可以省去服务器的成本,还可以减少各种系统运维的麻烦事(系统管理、备份、网络)。所以,基于github的个人站点,正在开始流行起来….

     

    6、Web论坛: nodeclub

    Node Club是用 Node.js 和 MongoDB 开发的新型社区软件,界面优雅,功能丰富,小巧迅速, 已在Node.js 中文技术社区 CNode 得到应用,但你完全可以用它搭建自己的社区。

     

    7、Web控制台工具: tty.js

    tty.js是一个支持在浏览器中运行的命令行窗口,基于node.js平台,依赖socket.io库,通过websocket与Linux系统通信。特性:支持多tab窗口模型; 支持vim,mc,irssi,vifm语法; 支持xterm鼠标事件; 支持265色显示; 支持session。

    五、nodejs的历史

    • 2008年左右,随着 AJAX 的逐渐普及,Web 开发逐渐走向复杂化,系统化;

    • 2009年2月,Ryan Dahl 想要创建一个轻量级,适应现代 Web 开发的平台;

    • 2009年5月,Ryan Dahl 在 GitHub 中开源了最初版本,同年11月,JSConf 就安排了 Node 讲座;

    • 2010年底,Joyent 公司资助,Ryan Dahl 也加入了该公司,专门负责 Node 的开发;

    • 2011年7月,在微软的支持下登陆 Windows 平台。PS:node 的生产环境基本是在 Linux 下。

    据 Node.js 创始人 Ryan Dahl 回忆,他最初希望采用 Ruby,但是 Ruby 的虚拟机效率不行。

    注意:是 Node 选择了 JavaScript,不是 JavaScript 发展出来了一个 Node。

    NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。

    如他所愿,NodeJS在服务端活跃起来,出现了大批基于NodeJS的Web服务。而另一方面,NodeJS让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。

    因此,对于前端而言,虽然不是人人都要拿NodeJS写一个服务器程序,但简单可至使用命令交互模式调试JS代码片段,复杂可至编写工具提升工作效率。

     

     

     

    六、学习nodejs的预备知识基础

    Html

    Css

    JavaScript

    简单的linux命令行操作

    七、安装nodejs

    windows环境下

    环境 win7 --64位系统

    (1)Node.js 安装包(不推荐)

    去 Node.js 的官网下载安装包:

    https://nodejs.org/en/

    我们也可以在https://nodejs.org/en/download/releases/上下载历史版本。

    注意,我们以一定要用偶数版(V4、V6等),不要用奇数版(比如V5),因为奇数版不稳定。

    我们并不推荐直接采用 Node.js.msi 安装包进行安装,不方便 node 的更新,原因如下:

    • 以前版本安装的很多全局的工具包需要重新安装;

    • 无法回滚到之前的版本;

    • 无法在多个版本之间切换(很多时候我们要使用特定版本)。

    因此,我们暂时先不用安装 Node.js,稍后用 NVM 的方式来安装 Node.js。

     

    (2)通过 NVM 安装Node.js(推荐)

    NVM:node.js version manager,用来管理 node 的版本。之所以需要这个工具,是因为 Node.js 的各种特性都没有稳定下来,所以我们经常由于老项目或尝新的原因,需要切换各种版本。

    第一步:下载nvm安装包

    下载地址  github上下载最新版本:https://github.com/coreybutler/nvm-windows/releases

    第二步:解压缩,新建配置文件

    在c盘创建文件夹C: odejsnvm,在nodejsnvm vm下面创建两个文件夹nvm,nodejs

    解压压缩包到C: odejsnvm vm

     

    打开nvm中的【install.cmd】,出现命令窗口后根据提示点击回车,出现下述状态

    在上面的目录中,新建一个settings.txt文件,里面的内容填充如下:

    root:C:
    odejsnvm
    vm  
    path:C:
    odejsnvm
    odejs  
    arch: 64 
    proxy: none
    

      

    上方内容的解释:

    • root 配置为:当前 nvm.exe 所在的目录

    • path 配置为:node 快捷方式所在的目录

    • arch 配置为:当前操作系统的位数(32/64)

    • proxy 不用配置

    配置淘宝镜像

    由于nvm默认的下载地址http://nodejs.org/dist/是外国外服务器,速度非常慢,因而可以切换到淘宝的镜像,下载速度会快很多。

    打开settings.txt,加入下面文件

     node_mirror: http://npm.taobao.org/mirrors/node/
     npm_mirror: https://npm.taobao.org/mirrors/npm/
    

      

     

    第三步:配置环境变量

    配置环境变量(右键 计算机 ->属性->高级系统设置->环境变量)

    1)配置【NVM_HOME】环境变量

    2)配置【NVM_SYMLINK】环境变量

    3)把配置好的两个环境变量加到Path当中

    在Path中填写 %NVM_HOME%;%NVM_SYMLINK%;

    第四步:测试是否成功

    打开cmd命令窗口(开始->运行->输入cmd 或 win键+r键->输入cmd)

    在命令窗口中输入 nvm version

    出现版本号后则为配置成功

     

    第五步:用nvm安装nodejs

    使用nvm安装node.js

    在命令窗口输入 nvm install latest latest为最新版本

     

    默认将下载的node.js存放到nvmde后的文件路径下,如

     

    第六步使用Node.js

    在命令行中输入nvm use 10.16.3表示使用版本为10.16.3的Node.js

     

    linux环境下

    环境:centos7.7 64位

    通过 NVM 安装Node.js(推荐)

    第一步安装nvm

    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
    

      

    修改为淘宝源

    在~/.bashrc里添加

    export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
    

      

    修改文件

    [nick@naive ~]$ vi ~/.bashrc
      
    # .bashrc
    ​
    # Source global definitions
    if [ -f /etc/bashrc ]; then
    ​
    # export SYSTEMD_PAGER=
    ​
    # User specific aliases and functions
    ​
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"  # This lo
    ads nvm bash_completion
    ​
    export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
    

      


     

    重新加载设置文件

    source ~/.bashrc
    

      

     

    第二步查看nvm是否安装成功

    nvm --version 可查看版本
    

      

    第三步安装nodejs

    通过 nvm install <version>(版本号) 安装指定版本

    nvm install 6.9.0 安装一个6.9.0版本的node

    第四步测试node安装是否成功

    [nick@naive ~]$ node -v
    v12.16.1
    ​
    

      

    NVM 的常用命令

    安装指定版本的node:

    nvm install 版本号 [arch]
    

      

    比如:nvm install 4.2.2

     

    卸载指定版本node:

    nvm uninstall 版本号
    

      

     

    切换使用指定版本的node,进行版本切换:

    nvm use 版本号 [arch]
    

      

     

    查看当前使用的 nvm 版本:

    nvm -v
    

      

     

     

    查看本地安装的所有的 node 版本:

    nvm list 或者nvm ls
    

      

     

    在 查看 node 的版本:

    node -v
    

      

     

    列出远程的node版本(linux下)

    nvm ls-remote
    

      

     

  • 相关阅读:
    n!末尾有几个零
    NYOJ 14(会场安排)
    使用dynamic来简化反射实现,并且提高了性能。
    VB.NET 、Java 与 C# 语法对比。
    你不得不使用的XML代码生成器,那就是XmlFactory
    C# 和vb.net事件
    SQL Server 2008中的hierarchyid
    系统架构师基础到企业应用架构客户端/服务器
    Asp.Net在IIS上运行不了,就试下下面方法应该可以你的问题
    为你的博客添加几分色彩
  • 原文地址:https://www.cnblogs.com/Nicholas0707/p/12535262.html
Copyright © 2011-2022 走看看