在计算机科学中,node通常指的是Node.js,是一个基于Chrome V8引擎的JavaScript运行环境。它允许开发者使用JavaScript编写服务器端代码,使JavaScript可以在服务器端运行,实现了JavaScript的全栈开发。
Node.js是一个事件驱动、非阻塞式I/O模型的平台,它可以处理大量并发连接,使得开发者可以高效地构建可扩展的网络应用程序。Node.js还提供了丰富的模块库,使开发者可以轻松地实现各种功能,例如文件系统访问、网络编程、加密、流处理等。
除了作为服务器端开发语言,Node.js也被广泛应用于构建命令行工具、桌面应用程序、物联网设备等领域。
[data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e](data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e)
go on
Node.js的另一个重要特点是它采用了单线程事件循环模型,这使得它能够高效地处理I/O密集型任务,但是对于CPU密集型任务则不太适合。为了解决这个问题,Node.js提供了子进程和集群模块,使得开发者可以利用多核CPU并行处理任务,提高应用程序的性能和稳定性。
除了核心模块外,Node.js还有大量的第三方模块可供使用,这些模块可以通过npm(Node.js包管理器)进行安装和管理。这使得开发者可以轻松地集成第三方库和框架,提高开发效率。
总之,Node.js是一种快速、高效、可扩展的服务器端开发语言,它的事件驱动、非阻塞式I/O模型和丰富的模块库,使得开发者可以轻松地构建高性能的网络应用程序。
npm 命令top50
以下是一些常用的npm命令(按照使用频率排列):
- npm install: 安装所有依赖项(dependencies)和开发依赖项(devDependencies)。
- npm install
: 安装指定的npm包。 - npm install -g
: 全局安装指定的npm包。 - npm update: 更新所有依赖项。
- npm update
: 更新指定的npm包。 - npm uninstall
: 卸载指定的npm包。 - npm search
: 搜索指定的npm包。 - npm init: 初始化一个新的npm包。
- npm publish: 发布一个npm包。
- npm adduser: 添加一个npm用户。
- npm whoami: 查看当前npm用户。
- npm outdated: 查看过期的依赖项。
- npm ls: 列出所有已安装的包。
- npm run : 运行package.json文件中的指定脚本。
- npm config list: 列出npm配置信息。
- npm config set
- npm config delete
: 删除npm配置信息。 - npm cache clean: 清除npm缓存。
- npm view
: 查看指定npm包的详细信息。 - npm docs
: 查看指定npm包的文档。 - npm link: 创建一个本地链接,将当前目录链接到全局npm模块中。
- npm ls -g --depth 0: 列出全局已安装的npm包。
- npm root: 显示npm全局包的根目录。
- npm help: 查看npm帮助信息。
- npm dedupe: 移除npm包的重复依赖项。
- npm shrinkwrap: 生成一个锁定文件,锁定当前版本的所有依赖项。
- npm view
dependencies : 查看指定npm包的依赖项。 - npm view
version : 查看指定npm包的版本号。 - npm view
readme : 查看指定npm包的README文件。 - npm view
maintainers : 查看指定npm包的维护者。 - npm view
contributors : 查看指定npm包的贡献者。 - npm view
bugs : 查看指定npm包的BUGS。 - npm view
homepage : 查看指定npm包的主页。 - npm view
license : 查看指定npm包的许可证。 - npm view
bin : 查看指定npm包的可执行文件路径。 - npm view
repository : 查看指定npm包的代码仓库。 - npm view
scripts : 查看指定npm包的脚本。 - npm adduser: 添加一个npm用户。
- npm logout: 注销当前npm用户。
- `npm
- npm ci: 使用package-lock.json文件安装所有依赖项。
- npm outdated --depth=0: 列出过期的直接依赖项。
- npm outdated --long: 列出过期依赖项的详细信息。
- npm init --yes: 使用默认配置快速初始化一个新的npm包。
- npm run-script : 运行package.json文件中的指定脚本。
- npm rebuild: 重新构建已安装的包。
- npm start: 运行package.json文件中的start脚本。
- npm stop: 运行package.json文件中的stop脚本。
- npm test: 运行package.json文件中的test脚本。
- npm version: 更新npm包的版本号,并添加版本标记到Git仓库。
npm包top100
以下是一些比较流行的npm包(按照GitHub上的star数排列,截至2021年9月):
- lodash: 一个实用的JavaScript实用工具库。
- express: 快速、无限制、简洁的Node.js Web框架。
- react: 用于构建用户界面的JavaScript库。
- request: 简化HTTP客户端请求的库。
- async: 异步操作的工具函数库。
- moment: 用于解析、验证、操作和显示日期的JavaScript库。
- webpack: 用于打包JavaScript应用程序的模块打包器。
- underscore: 用于JavaScript的实用工具库。
- bluebird: 一个快速的、功能齐全的Promise库。
- axios: 一个基于Promise的HTTP客户端,适用于浏览器和Node.js。
- socket.io: 用于构建实时应用程序的库。
- body-parser: 用于解析HTTP请求正文的中间件。
- cheerio: 用于在服务器上实现jQuery核心的库。
- react-dom: 用于将React组件呈现为DOM的库。
- babel-core: Babel编译器的核心部分。
- debug: 用于调试Node.js应用程序的小型调试库。
- gulp: 用于构建流的自动化构建工具。
- nodemailer: 用于发送电子邮件的Node.js模块。
- mongoose: MongoDB的优雅对象建模。
- jest: 用于测试JavaScript代码的JavaScript测试框架。
- passport: 用于验证用户的中间件。
- knex: 用于构建SQL查询的Node.js查询构建器。
- node-sass: Node.js版本的Sass。
- debug: 用于调试Node.js应用程序的小型调试库。
- webpack-dev-server: 用于开发环境的小型Node.js Express服务器,具有实时重载功能。
- commander: 用于构建命令行应用程序的库。
- compression: 用于压缩中间件的库。
- socket.io-client: 用于客户端的socket.io库。
- react-router: 用于React应用程序中的路由器。
- uuid: 用于生成UUID的库。
- body-parser: 用于解析HTTP请求正文的中间件。
- nodemon: 用于自动重启Node.js应用程序的工具。
- browserify: 用于在浏览器中使用CommonJS模块的工具。
- redux: 用于JavaScript应用程序的可预测状态容器。
- ejs: 嵌入式JavaScript模板引擎。
- pm2: 用于管理Node.js应用程序的进程管理器。
- socket.io-client: 用于客户端的socket.io库。
- formidable: 用于解析HTML表单数据的库。
- grunt: 用于自动化前端工作流程的任务运行器。
- react-native: 用于构建原生应用程序的JavaScript库。
- jquery: 用于JavaScript的快速、小型和功能丰富的库。
- bodymovin: 用于将Adobe After Effects动画导出为SVG、Canvas和HTML的库。
- immutable: 用于JavaScript数据不可变性的库。
- mocha: 用于测试Node.js和浏览器的JavaScript测试框架。
- moment-timezone: moment.js的时区扩展。
- socket.io-server: 用于服务器的socket.io库。
- debug: 用于调试Node.js应用程序的小型调试库。
- glob: 用于查找匹配文件的库。
- socket.io-redis: socket.io使用的redis适配器。
- uglify-js: JavaScript的压缩器和美化器。
- react-redux: 用于React和Redux之间的桥梁。
- cors: 用于Node.js的跨域资源共享(CORS)中间件。
- sequelize: 用于Node.js的Promise的ORM。
- node-fetch: 用于获取资源和处理HTTP响应的库。
- webpack-cli: webpack的命令行接口。
- express-validator: 用于Express.js的简单验证库。
- concurrently: 用于同时运行多个命令的库。
- moment-duration-format: 用于moment.js的持续时间格式化扩展。
- chai: 用于Node.js和浏览器的BDD/TDD断言库。
- helmet: 用于更安全的Express.js应用程序的中间件集合。
- html-webpack-plugin: 用于生成HTML文件的webpack插件。
- jsonwebtoken: 用于创建和解码JWT的库。
- passport-local: 用于Passport.js的本地身份验证中间件。
- node-pg-migrate: 用于PostgreSQL数据库迁移的库。
- react-native-vector-icons: 可重用图标的向量图标集。
- rimraf: 用于删除文件和目录的库。
- stylus: 动态样式语言。
- vue: 用于构建用户界面的JavaScript库。
- socket.io-adapter: socket.io使用的适配器。
- formidable: 用于解析HTML表单数据的库。
- bunyan: 用于Node.js日志记录的简单且快速的JSON日志记录器。
- request-promise: 基于Promise的HTTP客户端请求库。
- react-router-dom: 用于React应用程序中的DOM路由器。
- moment-range: 用于moment.js的日期范围扩展。
- autoprefixer: 用于自动添加浏览器前缀的PostCSS插件。
- bower: 用于管理前端依赖项的包管理器。
- browser-sync: 用于自动刷新浏览器的库。
- cross-env: 跨平台环境变量设置工具。
- eslint: JavaScript代码静态分析工具。
- jsdom: 用于Node.js中的虚拟DOM和HTML解析器。
- less: 动态样式语言。
- lodash-es: Lodash的ES模块构建。
- multer: 用于Node.js中处理HTTP POST请求的文件上传中间件。
- nodemailer: 用于Node.js的电子邮件发送库。
- passport-jwt: 用于Passport.js的JSON Web Token(JWT)身份验证中间件。
- postcss: 用于转换CSS的工具集。
- react-dom: 用于React应用程序的DOM渲染器。
- socket.io-client: 用于浏览器的socket.io库。
- webpack-dev-server: 用于webpack的开发服务器。
- yargs: 用于Node.js的命令行参数解析器。
- axios: 基于Promise的HTTP客户端请求库。
- bcryptjs: 用于JavaScript的bcrypt密码哈希库。
- body-parser: 用于Node.js的HTTP请求体解析中间件。
- concurrently: 用于同时运行多个命令的库。
- cross-env: 跨平台环境变量设置工具。
- dotenv: 用于加载环境变量的零依赖库。
- eslint-config-airbnb: Airbnb的ESLint共享配置。
- express-session: 用于Node.js的Express.js的会话中间件。
- react-transition-group: 用于React应用程序的动画库。
这是一个非常流行的npm包列表,但不是所有的包都适合所有的项目。选择使用哪些包取决于您的项目需求和开发目标。
下面是从安装Node.js到使用npm包的详细介绍和示例:
- 安装Node.js
首先,您需要从Node.js官网(https://nodejs.org/)下载并安装Node.js。安装完成后,您可以在终端中输入以下命令来检查Node.js是否成功安装:
Copy code
node -v
如果成功安装,将显示您安装的Node.js版本号。
- 初始化npm
安装Node.js之后,您需要初始化npm,以便在项目中使用npm包。在终端中进入您的项目目录,并运行以下命令:
csharpCopy code
npm init
该命令将引导您创建package.json文件,其中包含有关您的项目的信息,如名称、版本号、描述、作者等。根据提示,您可以输入相应的信息。
- 安装npm包
有许多npm包可供使用,您可以在**https://www.npmjs.com/** 上查找和选择您需要的包。例如,如果您想安装lodash包,则可以在终端中运行以下命令:
Copy code
npm install lodash
这将从npm库中下载并安装lodash包,并将其添加到您的项目中的package.json文件的dependencies部分。如果您需要安装多个包,可以在命令中列出它们,以逗号分隔,如下所示:
Copy code
npm install package1 package2 package3
您还可以在命令中添加参数,如--save-dev或--global,以指定包的安装位置和用途。例如,如果您需要安装一个仅用于开发目的的包,可以使用--save-dev参数,如下所示:
luaCopy code
npm install package --save-dev
- 使用npm包
安装npm包后,您可以在项目中的JavaScript文件中使用它们。例如,如果您安装了lodash包,您可以在您的JavaScript文件中添加以下代码来使用该包:
javascriptCopy code
const _ = require('lodash');
// 使用lodash中的函数
const result = _.chunk(['a', 'b', 'c', 'd'], 2);
console.log(result); // => [['a', 'b'], ['c', 'd']]
上面的代码通过使用require函数引入lodash包,并使用它中的chunk函数将数组拆分为指定大小的块。您可以在项目中的其他地方使用相同的方式使用其他npm包。
以上是使用npm包的基本过程,希望对您有所帮助!
下面是10个常用的npm包的安装和使用示例:
- Express.js
Express.js是一个流行的Node.js Web应用程序框架,它可以轻松地创建Web服务器和API。以下是安装和使用Express.js的示例:
安装:
Copy code
npm install express
使用:
javascriptCopy code
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
- Lodash
Lodash是一个JavaScript实用程序库,提供了许多方便的函数来简化JavaScript编程。以下是安装和使用Lodash的示例:
安装:
Copy code
npm install lodash
使用:
javascriptCopy code
const _ = require('lodash');
const numbers = [1, 2, 3, 4, 5];
const sum = _.sum(numbers);
console.log(sum); // 输出: 15
- Request
Request是一个用于处理HTTP请求的流行Node.js库。以下是安装和使用Request的示例:
安装:
Copy code
npm install request
使用:
javascriptCopy code
const request = require('request');
request('', (error, response, body) => {
console.log(body);
});
- Moment.js
Moment.js是一个流行的JavaScript日期处理库,它可以使日期和时间操作变得简单易用。以下是安装和使用Moment.js的示例:
安装:
Copy code
npm install moment
使用:
javascriptCopy code
const moment = require('moment');
const now = moment();
console.log(now.format('YYYY-MM-DD')); // 输出当前日期
- Mongoose
Mongoose是一个流行的Node.js MongoDB对象模型库,它提供了一种简单而直观的方式来处理MongoDB数据库。以下是安装和使用Mongoose的示例:
安装:
Copy code
npm install mongoose
使用:
javascriptCopy code
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydatabase');
const Schema = mongoose.Schema;
const personSchema = new Schema({
name: String,
age: Number
});
const Person = mongoose.model('Person', personSchema);
const person = new Person({
name: 'John',
age: 30
});
person.save((err, doc) => {
console.log(doc);
});
- Async
Async是一个流行的Node.js异步流程控制库,它提供了一种简单的方式来处理异步操作。以下是安装和使用Async的示例:
安装:
pythonCopy code
npm install async
使用:
javascriptCopy code
const async = require('async');
async.series([
function(callback) {
setTimeout(function() {
console.log('Task 1');
callback(null, 'one');
}, 200);
},
function(callback) {
setTimeout(function() {
console.log('Task 2');
callback(null, 'two');
}, 100);
}
], function(err, results) {
console.log(results);
});
- Socket.io
Socket.io是一个流行的Node.js实时Web应用程序库,它可以处理实时事件和消息。以下是安装和使用Socket.io的示例:
安装
luaCopy code
npm install socket.io
使用:
javascriptCopy code
const app = require('express')();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('chat message', (msg) => {
console.log('message: ' + msg);
io.emit('chat message', msg);
});
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
http.listen(3000, () => {
console.log('listening on *:3000');
});
- Nodemailer
Nodemailer是一个流行的Node.js电子邮件库,它提供了一种简单的方式来发送电子邮件。以下是安装和使用Nodemailer的示例:
安装:
Copy code
npm install nodemailer
使用:
javascriptCopy code
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@gmail.com',
pass: 'yourpassword'
}
});
const mailOptions = {
from: 'youremail@gmail.com',
to: 'myfriend@yahoo.com',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
- Passport
Passport是一个流行的Node.js身份验证库,它提供了一种简单的方式来处理用户身份验证和授权。以下是安装和使用Passport的示例:
安装:
Copy code
npm install passport
使用:
javascriptCopy code
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});
- Cheerio
Cheerio是一个流行的Node.js HTML解析和操作库,它提供了一种简单的方式来提取和操作HTML文档中的元素。以下是安装和使用Cheerio的示例:
安装:
Copy code
npm install cheerio
使用:
javascriptCopy code
const cheerio = require('cheerio');
const request = require('request');
request('', (error, response, html) => {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(html);
const title = $('title').text();
console.log(title);
}
});
建个简单的网站示例npm包的使用
好的,我可以为您提供一个建立简单网站的示例,使用的npm包包括Express、Body-parser和EJS。
- 首先,需要安装这些npm包:
cssCopy code
npm install express body-parser ejs
- 在项目目录下创建一个名为app.js的文件,并将以下代码添加到文件中:
javascriptCopy code
const express = require('express');
const bodyParser = require('body-parser');
const ejs = require('ejs');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
res.render('index', { title: 'Homepage' });
});
app.get('/about', (req, res) => {
res.render('about', { title: 'About Us' });
});
app.get('/contact', (req, res) => {
res.render('contact', { title: 'Contact Us' });
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
- 在项目目录下创建一个名为views的文件夹,并在该文件夹中创建三个名为index.ejs、about.ejs和contact.ejs的文件,分别添加以下代码:
index.ejs:
htmlCopy code
<%= title %>
Welcome to <%= title %>!
Thank you for visiting our site.
about.ejs:
htmlCopy code
<%= title %>
<%= title %>
We are a small company based in the heart of the city.
contact.ejs:
htmlCopy code
<%= title %>
<%= title %>
Please use the following form to contact us:
- 运行应用程序:
Copy code
node app.js
- 访问以下网址:
bashCopy code
这个示例应用程序包括三个网页,分别是主页、关于我们和联系我们。主页上显示欢迎消息,关于我们页面上显示公司信息,联系我们页面包括一个表单,用户可以填写并提交,表单数据将通过POST方法提交给服务器。在这个示例中,使用了Express、Body-parser和EJS三个npm包。