目录
安装
- 去官网下载二进制包(按需下载版本)
nodejs
xz包解压命令:xz -d xxx.tar.xz
- 解压后的文件夹即node的环境
- 把文件夹拷贝到指定路径下(任意指定)
- 在
~/.bashrc
文件中添加环境变量 - 执行
source ~/.bashrc
使环境变量生效.
环境变量如下
export NODE_HOME=node文件夹地址
export PATH=${PATH}:${NODE_HOME}/bin
export NODE_PATH=${NODE_HOME}/lib/node_modules
依赖模块
nodejs安装依赖模块
配置package.json文件下载依赖模块.
{
"name": "cdf_project",
"version": "1.0.0",
"license": "MIT",
"author": "dingfang",
"contributors": [
{
"name": "dingfang",
"email": "xx@xx.com",
"url": "https://changdingfang.com"
}
],
"description": "cdf xx",
"keywords": ["cdf", "dingfang", "nodejs"],
"main": "./nodeserver.js",
"scripts": {
"start": "node nodeserver.js",
"dev": "nodemon",
"print": "echo hello world"
},
"repository": {
"type": "git",
"url": "https://github.com/xxx.git"
},
"engine": {
"node": "8.15.0"
},
"dependencies": {
"errorhandler": "^1.5.1",
"express": "^4.17.1",
"log4js": "^1.1.1",
"morgan": "^1.9.1",
"mysql": "^2.17.1",
"node-getopt": "^0.3.2",
"xmlhttprequest": "^1.8.0"
},
"devDependencies": {
"nodemon": "^1.18.11"
}
}
说明
字段 | 说明 |
---|---|
name | 包的名称,发布到npm注册表时,软件包将在其中显示的名称,不超过214字符,且都是小写,必须url安全 |
version | 描述软件的当前版本 |
license | 许可证 |
author | people字段, 供一人使用 |
contributors | people字段, 供多人使用 |
description | npm注册表将钙芝端用于发布的软件包,在搜索结果中和npmjs。com官网上描述该软件包 |
keywords | npm注册表会为该字段建立索引,能够在搜索软件包时帮助找到它们 |
main | 定义项目的入口点,通常是用于启动项目的文件 |
scripts | scripts属性接收一个对象,它的值为可以通过 npm run 运行的脚本,如 npm run print |
repository | 记录项目桫在的资源库(url字段本意是指向可从中访问版本控制的位置,而不仅仅是指向已发布的代码库) |
dependencies | 列出项目使用的所有依赖项 |
devDependencies | 列出仅开发期间需要的依赖项,可以明确指出生产中不需要哪些依赖项 |
使用方式
npm install
该命令会自动解析package.json
文件, 下载文件内设置好的模块以及模块依赖的模块.
下载完成后可以看到node_modules
第三方模块文件夹 和 package-lock.json
第三方模块下载版本信息json文件.
搭建服务端
代码示例
/* global require, __dirname, console */
/* eslint-disable import/no-extraneous-dependencies, no-console */
const express = require('express');
const bodyParser = require('body-parser');
const errorhandler = require('errorhandler');
const morgan = require('morgan');
// eslint-disable-next-line import/no-unresolved
// const https = require('https');
const http = require('http');
/*
const fs = require('fs');
// https需要证书配置
const options = {
key: fs.readFileSync('./cert/key.pem').toString(),
cert: fs.readFileSync('./cert/cert.pem').toString(),
};
*/
const app = express();
// app.configure ya no existe
app.use(errorhandler({
dumpExceptions: true,
showStack: true,
}));
app.use(morgan('dev'));
// http访问的静态文件路径设置
app.use(express.static(`${__dirname}/webclient`));
console.log(`dirname: ${__dirname}`);
// 加载使用json, urlencoded解析中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true,
}));
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, DELETE');
res.header('Access-Control-Allow-Headers', 'origin, content-type');
if (req.method === 'OPTIONS') {
res.send(200);
} else {
next();
}
});
// app.set('views', __dirname + '/../views/');
// disable layout
// app.set("view options", {layout: false});
app.get('/gettest', function(req, res){
console.log('get: ', req.query);
res.send('hello world get');
});
app.post('/posttest', function(req, res) {
console.log('post: ', req.body);
res.send('hello world post');
});
app.delete('/posttest', function(req, res) {
console.log('delete: ', req.params);
res.send('hello world delete');
});
app.put('/puttest', function(req, res) {
console.log('put: ', req.params);
res.send('hello world put');
});
app.patch('/patchtest', function(req, res) {
console.log('patch: ', req.params);
res.send('hello world patch');
});
// 开启服务, 监听端口
app.listen(9010);
// const server = https.createServer(options, app);
// server.listen(8082);
const server = http.createServer(app);
console.log('node server');
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 245292011@qq.com