Node.js的概念及安装使用

    xiaoxiao2022-07-02  112

    什么是Node.js?

    Node.js是一门后端语言

    基于Chrome v8引擎的js运行环境; 除此之外:还有其他的引擎: 单片机、actionscript

    Node.js有两大特征

    事件驱动 事件的定义(发布)事件的触发(订阅) 非阻塞式 I/O 模型 非阻塞 : 执行一个任务时,不需要等待这个任务执行完成,就可以去执行其他任务I/O: 磁盘文件操作 / 数据库数据操作

    总结:

    问题: 非阻塞,但是js是单线程,要想实现非阻塞,必须将任务放到任务队列,任务队列如何放?解决: js中异步操作js中如何实现异步操作 1. 回调函数 2. Promise 3. gengator函数 4. async函数 5. Node.js自带的 nextTick setImmediate 6. 别人封装的 async.js 库

    Node.js的包管理器

    NPM: 全球最大的开源生态系统( 国外的 )

    cnpm 淘宝镜像( 国内的 )

    yarn 流行

    npm && yarn 全部要配置国内镜像 ( 百度关键字: yarn国内镜像 )

    Node.js的版本问题

    Node.js有两个版本, 一个是测试版, 一个是稳定版,造成;两个版本的原因是: 有两个团队业内规定: 版本的单数是: 测试版 bate版本版本的偶数是: 稳定版

    Node.js 安装

    安装方式有两种:

    官网下载镜像直接安装 ( 只能使用一个版本 )

    使用 nvm 来安装 ( nvm可以管理多个Node.js版本 )

    nvm有坑: nvm安装有难度nvm安装: https://github.com/coreybutler/nvm-windows/releases (下载第三个 nvm-setup.zip)nvm安装前先卸载本地的Node.js问题: 如果报错 nvm命令没找到, 就是你的系统环境变量没有自动生成, 所以你要手动配置https://blog.csdn.net/qq_27626333/article/details/77857223

    注意: Node.js安装的最低版本至少要8.9以上

    Node.js使用

    1. 命令终端

    Node.js的全局对象是 global ; javascript的全局对象是 window直接在命令终端中输入node,然后回车,就会出现 ‘>’ 标识,然后就可以写js语法了命令终端退出: Ctrl + c 两次

    2. 文件型使用

    命令行键盘 tab 键 自动补全文件名称

    执行文件/运行文件: $ node 文件名称.js

    自动监听node.js文件/ 自动刷新工具

    nodemonsupervisor

    自动监听工具的安装

    npm: $ npm install nodemon -g $ npm install supervisor -gcnpm: $ cnpm install nodemon -g $ cnpm install supervisor -gyarn: $ yarn add nodemon global $ yarn add supervisor global

    Node.js服务器

    Node.js服务器有两种

    web服务器( 静态服务器 )api服务器( 动态服务器 ) 数据接口

    Node.js web服务器

    C:\Ruby23-x64\bin; %SystemRoot%\system32; %SystemRoot%; %SystemRoot%\System32\Wbem; %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\; C:\Program Files\Git\cmd; %NVM_HOME%; %NVM_SYMLINK%; C:\Ruby23-x64\bin;%SystemRoot%\system32; %SystemRoot%;%SystemRoot%\System32\Wbem; %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\; C:\Program Files\Git\cmd;

    用Node.js创建一个静态服务器,然后将项目部署在这个服务器中

    源代码:

    var http = require( 'http' ); var port = 8080 ; var hostname = '127.0.0.1' var path = require( 'path' ) // 磁盘路径处理的模块 var fs = require( 'fs' ) // 操作文件、目录的模块 var url = require( 'url' ) // 处理url var server = http.createServer( function ( request, response ) { var staticPath = path.join( __dirname,'static' ) var urlObj = url.parse( request.url ) /* Url { protocol: null, slashes: null, auth: null, host: null, port: null, hostname: null, hash: null, search: null, query: null, pathname: '/static/css/index.css', path: '/static/css/index.css', href: '/static/css/index.css' */ if( urlObj.pathname === '/'){ urlObj.pathname += 'index.html' } console.log( urlObj.pathname ) // fs.readFile(路径,字符编码,错误优先的回调函数) var filePath = path.join( staticPath, urlObj.pathname ) fs.readFile( filePath,'binary',function( error,filecontent ) { if ( error ){ throw error }else { response.write( filecontent, 'binary' ) response.end() } }) }) server.listen( port , hostname , function () { console.log( `The server is runing: http://${ hostname }:${ port }` ) })
    最新回复(0)