当前位置: 首页 > 后端技术 > Node.js

Node.js简介:运行在服务器端的JavaScript

时间:2023-04-03 22:57:21 Node.js

Node.js是一个基于ChromeJavaScript运行时的平台。Node.js是一个事件驱动的I/O服务器端JavaScript环境。基于谷歌的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。简单来说,Node.js就是运行在服务器端的JavaScript。详细学习:菜鸟教程一、快速入门HelloWorld新建一个js文件helloworld.jsconsole.log("helloworld!");终端执行文件(需要在文件所在目录执行)nodehelloworld.js实现简单的HttpServer新建一个js文件服务器.jsvarhttp=require('http');http.createServer(function(request,response){//发送HTTPheader//HTTPstatusvalue:200:OK//Contenttype:text/plainresponse.writeHead(200,{'Content-Type':'text/plain'});//发送响应数据"HelloWorld"response.end('HelloWorld\n');}).listen(8888);//终端打印如下信息console.log('Serverrunningathttp://127.0.0.1:8888/');在终端执行文件(需要在文件所在目录执行)nodeserver.js关闭nodejs服务在终端按Ctrl+C2.NPMPackageManager1.基本信息介绍,本Node.js包管理器NPM详解文章,点击阅读NPM官网NPM是随NodeJS一起安装的包管理工具,可以解决很多NodeJS代码部署中的问题,常见的使用场景如下:允许用户下载第三方-其他人从NPM服务器编写的派对包,并在本地使用它们。允许用户从NPM服务器上下载安装他人编写的命令行程序供本地使用。允许用户将自己的包或命令行程序上传到NPM服务器供他人使用。检查安装由于新版nodejs已经集成了npm,所以之前也安装了npm。可以输入“npm-v”测试是否安装成功,会出现版本提示,表示安装成功。$npm-v2.3.0npmupgradeLinux系统环境升级$sudonpminstallnpm-gWindows系统环境升级npminstallnpm-g2.基础应用2.1安装模块npminstallNode.js模块语法如下:$npminstall下面的例子中,我们使用npm命令安装常用的Node.jsweb框架模块express:$npminstallexpressexpress包安装完成后,将express包放在node_modules目录下项目目录,所以只需要传require('express')就可以了,不用指定第三方包路径。varexpress=require('快递');2.2卸载模块您可以使用以下命令卸载Node.js模块。$npmuninstallexpress卸载后可以到/node_modules/目录下查看包是否还存在,或者使用以下命令查看:$npmls2.3更新模块可以使用以下命令更新模块:$npmupdateexpress2.4Searchmodules可以使用下面是搜索模块:$npmsearchexpress2.5生成包文件使用npm快速生成package.json(类似pom.xml)npminit//进行一些设置根据提示{"name":"nodedemo",//项目名称"version":"1.0.0",//版本号"description":"npmtest",//描述"main":"HelloWorld.js",//entryjs"scripts":{//运行脚本"test":"echo\"Error:notestspecified\"&&exit1","start":"nodeserver.js"},"author":"Hyman",//developer"license":"ISC"//授权协议}3.连接Mysql并安装mysql模块npminstallmysqlsimplesample新建一个测试文件MysqlTest.jsvarmysql=require('mysql');varconnection=mysql.createConnection({host:'localhost',user:'root',password:'123456',port:'3306',database:'test'});连接.connect();varsql='SELECT*FROMuser';//check(无引用方法)connection.query(sql,function(err,result){if(err){console.log('[SELECTERROR]-',错误消息);返回;}console.log('------------------------SELECT------------------------------');控制台日志(结果);console.log('--------------------------------------------------------\n\n');});varnow=newDate();varSql='INSERTINTOuser(Id,name,mail,update_date,create_date)VALUES(0,?,?,?,?)';varSqlParams=['李四','lisi@mail.com',now,now];//增加(参考方法)connection.query(Sql,SqlParams,function(err,result){if(err){console.log('[INSERTERROR]-',err.message);return;}console.log('-------------------------INSERT----------------------------');//console.log('INSERTID:',result.insertId);console.log('INSERTID:',result);console.log('----------------------------------------------------------------');});连接结束();注意事项1.不要将测试文件命名为mysql.js2,出现如下错误[SELECTERROR]-ER_NOT_SUPPORTED_AUTH_MODE:Clientdoesnotsu服务器请求的pport认证协议;考虑升级MySQL客户端报错原因:最新的mysql模块没有完全支持MySQL8的“caching_sha2_password”加密方式,而“caching_sha2_password”是MySQL8默认的加密方式解决方法:将Mysql的加密方式改为USEmysql;--root为数据库用户,123456为该用户对应的密码。更改用户'root'@'localhost'用mysql_native_passwordBY'123456'标识;冲洗特权;4、编写RESTfulAPI创建json数据资源文件users.json"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},"user2":{"name":"suresh","password":"password2","profession":"图书管理员","id":2},"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}创建RESTfulAPI文件server.jsvarexpress=require('express');varapp=express();varfs=require("fs");//获取用户列表app.get('/listUsers',function(req,res){fs.readFile(__dirname+"/"+"users.json",'utf8',function(err,data){console.log(data);res.end(data);});})varuser={"user4":{"name":"mohit","password":"password4",“职业”:“老师”,“id”:4}}//添加新的用户数据app.get('/addUser',function(req,res){//读取现有数据fs.readFile(__dirname+"/"+"users.json",'utf8',function(err,data){data=JSON.parse(data);data["user4"]=user["user4"];console.log(data);res.end(JSON.stringify(data));});})//删除对应的用户app.get('/deleteUser/:id',function(req,res){fs.readFile(__dirname+"/"+"users.json",'utf8',function(err,data){data=JSON.parse(data);deletedata["user"+req.params.id];console.log(data);res.end(JSON.stringify(data));});})//根据输入的id返回结果,需要放在最后避免干扰之前的路由app.get('/:id',function(req,res){fs.readFile(__dirname+"/"+"users.json",'utf8',function(err,data){data=JSON.parse(data);varuserTemp=data["user"+req.params.id]控制台。log(userTemp);res.end(JSON.stringify(userTemp));});})varserver=app.listen(8081,function(){varhost=server.address().addressnodevarport=server.address().portconsole.log("应用实例,访问地址为http://%s:%s",host,port)})然后执行如下命令$nodeserver.js应用实例,访问地址在浏览器中为http://0.0.0.0:8081http://127.0.0.1:8081/listUsers在浏览器中为http://127.0.0.1:8081/addUser注解如果是多个API写在一起,输入路由应该放在最后。小编搭建了一个前端技术交流学习圈。好友可以提问,聊技术,聊天气,聊心情。点击这里期待您的加入!秘签前端点赞本文+评论666支持,没看过小编其他文章的可以看看。