首页 > 编程语言 >nodejs敲门

nodejs敲门

时间:2023-11-16 17:13:20浏览次数:113  
标签:npm nodejs res app express ts js 敲门

前言

node.js是在电脑上,给js一个可以脱离浏览器运行的环境。功能上像jdk,操作为命令行。

现在演化为可以做web服务器使用,拥有许多成熟的项目和插件。

本文简单讲讲它,以及它的两个小用途(TS和WebApi服务器)。

谈不上入门,只能算是“敲门”。


 

 安装:

nodejs官网和中文网都可以下载安装包。zip格式解压之后需要设置环境变量PATH,windows下msi常规安装即可。目前最新的LTS(长期支持版本)为20.9.0。

安装成功,会自带一个包管理程序,npm。

常用命令:

  npm config set registry https://registry.npmmirror.com //更改为国内阿里的源,视速度选择

  npm config get registry //查看源设置

npm init  //创建配置文件package.json(常用于node项目,对web项目意义不大)

npm install [-g(全局)] xxx[@版本号] [-save]  //安装包xxx(是否写入配置,这里一般不写入)

npm uninstall [-g] xxx  //卸载包xxx

npm ls [-g]  //查看已安装的包

node xx.js  //运行js


 

 TypeScript(简称ts):

来自微软,给js添加了类型,编译为js运行,是js的超级(支持一切js语法)

安装:

 npm install -g typescript 

使用(二选一):

1、直接使用命令"tsc xxx.ts"把文件编译成js。

2、利用ts的项目配置文件tsconfig.json,在存盘时自动编译。

例:

1、新建web项目w1。

2、用文件夹ts存放ts文件,编译后的js文件存放在文件夹js中。

 3、用 tsc init 在网站根目录下创建tsconfig.json,写入以下内容:

 1 {
 2   "compilerOptions": {
 3     "noImplicitAny": false,
 4     "noEmitOnError": true,
 5     "removeComments": false,
 6     "sourceMap": true,
 7     "target": "es5",
 8     "outDir": "js"//ts编译出js的输出目录
 9   },
10   "include": ["ts/**/*"],//ts所在位置。“**/”为任意层级目录,“?”和“*”为一般通配符。
11   "exclude": [
12     "js",
13     "img",
14     "css"
15   ]
16 }

 4、运行 tsc -w ,监控ts文件,在存盘时自动编译。

5、书写t1.ts程序

1 //输出两个数和的2倍
2 function showSum(x,y):void
3 {
4     let t:number=x+y;
5     //t=x+y;
6     console.log(2*t);
7 }

存盘即生成t1.js。如果把第4行换成第5行,控制台会报变量未声明错误。 

6、在网页里运行它

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <script src="js/t1.js"></script>
 7     </head>
 8     <body onl oad="showSum(3,4);">
 9         
10     </body>
11 </html>

结果略。

 TS作为强类型语言,不仅在处理复杂数据和逻辑的时候有优势,作为页面脚本也有很多优点。

如下例:

  声明了a是一个页面div元素,则在把它当做A标签,试图寻找href属性的时候,IDE(此处为HBuilder)会报错,编译也过不了。

 TS语法,可以类比c#、java等语言,自己去学。 


 

关于跨文件模块引用

1、网站模式下,js程序模块可以在网页里排队,跨文件引用。

2、服务端nodejs项目里,跨文件引用牵涉到各种标准,很麻烦。建议初学者不做纠缠,相信后续版本会逐渐规范。【主要是因为官方标准(ES Module)滞后,民间标准(CommonJs)出来以后官方又不认……都是破事。】

如果你现在特别想学,我觉得学官方的比较好。本文后面express的例子,用的是CommonJs。因为这个框架足够老(用不了ESM),足够简单,现在用的也还不少,适合做webapi入门联调js。


Express :

如上所述,nodejs下一个不错的入门webapi框架。

1、使用npm(如前述)安装express包(不带-g,非全局安装)之后,最简单的入门例子如下。

App.js:

 1 const express = require("express");
 2 const app = express();
 3 
 4 app.get("/", (req, res) => {
 5   res.send("Hello World!");
 6 });
 7 
 8 app.listen(3000, () => {
 9   console.log("示例应用正在监听 3000 端口 !");
10 });

运行 node app.js 之后,在浏览器里可以查看结果:

 

可以用 app.use(express.static('public')) 中间件,加在3-7行之间的位置,实现静态访问public文件夹下的文件(一般是html、css等)。

 2、对上面的例子稍作修改,演示返回对象的json字符串和跨文件调用函数。

j1.js:

 1 function f1()
 2 {
 3     return "102";
 4 }
 5 function f2()
 6 {
 7     return "204";
 8 }
 9 exports.f1=f1;
10 exports.f2=f2;

第9、10行导出这两个函数。

App.js

 1 //import * as myf1 from "./js/j1.js";
 2 const myf1 = require("./js/j1");
 3 const express = require("express");
 4 const app = express();
 5 
 6 app.get("/", (req, res) => {
 7   res.send("Hello World!");
 8 });
 9 
10 app.get("/test1", (req, res) => {
11   res.send({ xm: "zs", nl: 20 });
12 });
13 
14 app.get("/test2", (req, res) => {
15   res.send(myf1.f1() + myf1.f2());
16 });
17 
18 app.listen(3000, () => {
19   console.log("示例应用正在监听 3000 端口 !");
20 });

说明:

1、第1行是ESM引用方式。语法正确,但不被Nodejs默认支持。即使按规定做出修改,也因无法和第3行express的CommonJs引用并存,而无法使用。

2、第2行,CommonJs方式引用另外文件的功能。

3、10-12行返回对象,自动json化。

4、14-16行执行外部函数。

未尽事宜,感兴趣可以自学(不建议深学)。

运行结果:

 3、nodejs资源很多,下面利用“multer”包配合“express”,实现简单的文件上传。大家举一反三

目录结构:

index.js:

 1 var fs = require('fs');
 2 var express = require('express');
 3 var multer  = require('multer')
 4 
 5 var app = express();
 6 var upload = multer({ dest: 'upload/' });
 7 
 8 // 单文件上传
 9 app.post('/upload', upload.single('logo'), function(req, res, next){
10     res.send({ret_code: '0'});
11 });
12 
13 app.listen(3000,() => 
14   console.log('App is listening on 3000'));

第6行设置保存位置,第9行接受并上传表单中logo对应的文件。

前端文件index.html:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6     </head>
 7     <body>
 8         <form action="http://127.0.0.1:3000/upload" method="post" enctype="multipart/form-data">
 9             <h2>单图上传</h2>
10             <input type="file" name="logo">
11             <input type="submit" value="提交">
12         </form>
13     </body>
14 </html>

运行:

 

运行上传后,upload文件夹里会多出一个文件。设置正确的扩展名可以查看内容。

 

注意:upload是个临时保存的位置。真正使用,应该转存到硬盘的其他位置。


  

对学校机房里常见的win7系统,注意以下两点:

1、nodejs最高只能用v13.14版本,需要在官网(或中文网)找历史安装包。

2、ts v5.0.4 //nodejs v13.14下最高ts版本

不影响学习上面的内容。

标签:npm,nodejs,res,app,express,ts,js,敲门
From: https://www.cnblogs.com/wanjinliu/p/17807569.html

相关文章

  • nodejs "Client does not support authentication protocol requested by server; con
    登录mysql输入以下命令:--选择mysql数据库:usemysql--laremehpe是登录用户名ALTERUSER'laremehpe'@'localhost'IDENTIFIEDBY'password'PASSWORDEXPIRENEVER;--laremehpe->用户名,123456->密码ALTERUSER'laremehpe'@'localhos......
  • nodejs学习03——包管理工具npm
    关于npm的国内镜像源一、说明在前端开发的时候使用国外的镜像源速度很慢并且容易下载失败,有时候需要尝试多次才有可能下载成功,很麻烦,因此可以切换为国内镜像源,下面为常用的npm,yarn,pnpm切换国内镜像源(以淘宝为例)的方式。二、NPM切换镜像源查看当前的镜像源。npmconfigge......
  • 使用nvm使Windows电脑支持多个Nodejs版本
     Node.js一台电脑只能装一个版本,但是有时候开发项目会用到不同版本的Node.js,卸载再装是很麻烦的,而nvm就是解决这个问题的,有了它就可以在一个电脑上安装多个Node.js版本,并且在不同版本之间切换使用。 下载github下载地址:https://github.com/coreybutler/nvm-windows/releases......
  • hmac使用场景及nodejs案例
    HMAC(Hash-basedMessageAuthenticationCode,基于哈希的消息认证码)是一种基于哈希函数的安全认证机制,用于确保数据的完整性和身份认证。它通过将密钥与消息进行哈希运算,生成一个固定长度的哈希值,用于验证数据的真实性和完整性。原理:使用一个密钥(Key)和一个哈希函数(如SHA-256)生成一个......
  • nodejs安装
    下载node并安装https://nodejs.org/dist/v12.14.0/node-v12.14.0-x64.msi检测是否安装成功node-v设置npm的镜像(和设置maven一个道理)1)打开cmd使用命令npmconfigsetregistryhttps://registry.npm.taobao.org2)配置后壳通过下面命令来验证是否成功npmconfigls......
  • Nodejs 第十七章(events)
    EventEmitterNode.js核心API都是采用异步事件驱动架构,简单来说就是通过有效的方法来监听事件状态的变化,并在变化的时候做出相应的动作。fs.mkdir('/tmp/a/apple',{recursive:true},(err)=>{if(err)throwerr;});process.on('xxx',()=>{})举个例子,你去一家餐厅吃......
  • nodejs 一些不错的ioc 框架
    nodejs周边一些ioc框架还是不少的,以下整理一些,而且不少有以前简单介绍过说明目前InversifyJS,awilix还不错基本都还在维护以及迭代中,typedi以及tsyringe似乎缺少维护了injex属于一个比较新的ioc项目,目前看使用还是比较简洁的,比较类似java的guice框架,实际上ioc框架特别多......
  • nodejs安装
    官网下载路径:https://nodejs.org/en/download,点击previousReleases查看以前的版本  Node安装yarnNodei-gyarn......
  • NodeJS系列(15)- TypeScript (二) | 对象类型 (Object Types)
    在“NodeJS系列(14)-TypeScript(一)|安装TypeScript、常用类型”里,我们简单介绍了TypeScript的安装配置,讲解和演示了TypeScript常用类型。本文继续介绍TypeScript对象类型(ObjectTypes)。TypeScript:https://www.typescriptlang.org/(中文版:https://ts.nodejs.cn/)Micro......
  • NodeJS系列(14)- TypeScript (一) | 安装 TypeScript、TypeScript 常用类型
    JavaScript现在是有史以来最广泛使用的跨平台语言之一。JavaScript最初是一种用于向网页添加微不足道的交互性的小型脚本语言,现已发展成为各种规模的前端和后端应用的首选语言。虽然用JavaScript编写的程序的大小、作用域和复杂性呈指数级增长,但JavaScript语言表达不同代码......