wordpress 全站404,我做微信淘宝客网站,首页模板,wordpress选定文字标红用到的技术栈#xff1a; nodejswebpackknockoutmongodbPM2rabbitmq
以下是一个综合指南#xff0c;展示如何将 Node.js、Webpack、Knockout.js、MongoDB、PM2 和 RabbitMQ 集成到一个项目中。
我们将在这一项目中添加 RabbitMQ#xff0c;用于处理消息队列。这对于任务分…用到的技术栈 nodejswebpackknockoutmongodbPM2rabbitmq
以下是一个综合指南展示如何将 Node.js、Webpack、Knockout.js、MongoDB、PM2 和 RabbitMQ 集成到一个项目中。
我们将在这一项目中添加 RabbitMQ用于处理消息队列。这对于任务分派、异步处理等场景非常有用。
第一步: 初始化项目 首先创建一个新的项目目录并初始化一个 Node.js 项目
Copy
mkdir my-app cd my-app npm init -y 这将在 my-app 目录下创建一个 package.json 文件。
第二步: 安装依赖 我们需要安装以下依赖库
项目依赖 express: 用于创建服务器 mongoose: 用于连接和操作 MongoDB knockout: 用于创建响应式 UI amqplib: AMQP 0-9-1 客户端用于与 RabbitMQ 交互
Copy
npm install express mongoose knockout amqplib 开发依赖 webpack: 用于打包前端代码 webpack-cli: 命令行工具用于运行 Webpack webpack-dev-server: 开发服务器提供实时重新加载功能
Copy
npm install --save-dev webpack webpack-cli webpack-dev-server 安装 PM2 PM2 是一个进程管理器用于长时间运行的 Node.js 应用程序
Copy
npm install pm2 -g 如果希望本地安装 PM2也可以用以下命令
Copy
npm install pm2 --save-dev 第三步: 创建服务器文件 创建 server.js 在根目录下创建一个 server.js 文件并添加以下代码
Copy
const express require(‘express’); const mongoose require(‘mongoose’); const amqp require(‘amqplib/callback_api’);
// 连接到本地 MongoDB 数据库 myapp mongoose.connect(‘mongodb://localhost:27017/myapp’, { useNewUrlParser: true, useUnifiedTopology: true });
const app express(); app.use(express.json());
// 定义一个 Mongoose 模型 const ItemSchema new mongoose.Schema({ name: String }); const Item mongoose.model(‘Item’, ItemSchema);
// API 路由 app.get(‘/items’, async (req, res) { const items await Item.find(); res.json(items); });
app.post(‘/items’, async (req, res) { const newItem new Item(req.body); await newItem.save();
// 发送消息到 RabbitMQ
sendToQueue(newItem);res.json(newItem);});
// 启动服务器 app.listen(3000, () { console.log(‘Server is listening on port 3000’); });
// 连接到 RabbitMQ 并发送消息 function sendToQueue(item) { amqp.connect(‘amqp://localhost’, (error0, connection) { if (error0) { throw error0; } connection.createChannel((error1, channel) {if (error1) {throw error1;}const queue itemQueue;const msg JSON.stringify(item);channel.assertQueue(queue, {durable: false});channel.sendToQueue(queue, Buffer.from(msg));console.log( [x] Sent %s, msg);});setTimeout(() {connection.close();}, 500);
});} 注意: 请确保你的 RabbitMQ 和 MongoDB 服务器正在运行。你可以使用以下命令启动它们
Copy
启动 MongoDB
mongod
启动 RabbitMQ (RabbitMQ 必须已经安装)
rabbitmq-server 消费 RabbitMQ 队列中的消息 创建一个 consumer.js 文件用于消费队列中的消息
Copy
const amqp require(‘amqplib/callback_api’);
amqp.connect(‘amqp://localhost’, (error0, connection) { if (error0) { throw error0; } connection.createChannel((error1, channel) { if (error1) { throw error1; } const queue itemQueue;channel.assertQueue(queue, {durable: false});console.log( [*] Waiting for messages in %s. To exit press CTRLC, queue);channel.consume(queue, (msg) {const item JSON.parse(msg.content.toString());console.log( [x] Received %s, item.name);// 在这里处理收到的消息}, {noAck: true});
});}); 启动 PM2 管理器 PM2 可以用于同时启动我们的 server.js 和 consumer.js 。
更新 package.json 脚本
Copy
“scripts”: { “start”: “webpack serve”, “serve”: “webpack build pm2 start ecosystem.config.js” } 创建 ecosystem.config.js
Copy
module.exports { apps: [{ name: ‘server’, script: ‘server.js’, instances: 1, autorestart: true, watch: false, max_memory_restart: ‘1G’ }, { name: ‘consumer’, script: ‘consumer.js’, instances: 1, autorestart: true, watch: false, max_memory_restart: ‘1G’ }] }; 配置 Webpack 在根目录下创建一个 webpack.config.js 文件并添加以下代码
Copy
const path require(‘path’);
module.exports { entry: ‘./src/main.js’, output: { filename: ‘bundle.js’, path: path.resolve(__dirname, ‘dist’) }, devServer: { static: { directory: path.join(__dirname, ‘dist’), }, compress: true, port: 9000 }, mode: ‘development’ }; 创建前端代码 创建必要的目录和文件
Copy
mkdir src touch src/main.js touch src/index.html 编辑 src/index.html
Copy
Webpack, Knockout.js, MongoDB, RabbitMQ
Webpack Knockout.js MongoDB RabbitMQ
Add Item 编辑 src/main.js
Copy
import ko from ‘knockout’;
class ViewModel { constructor() { this.newItem ko.observable(‘’); this.items ko.observableArray([]); this.loadItems();this.addItem this.addItem.bind(this);
}async loadItems() {const response await fetch(http://localhost:3000/items);const items await response.json();this.items(items);
}async addItem() {const response await fetch(http://localhost:3000/items, {method: POST,headers: {Content-Type: application/json},body: JSON.stringify({ name: this.newItem() })});const item await response.json();this.items.push(item);this.newItem();
}}
ko.applyBindings(new ViewModel()); 启动应用 用 Webpack Dev Server 开发 运行以下命令来启动开发服务器
Copy
npm start 在生产环境中用 PM2 启动 运行以下命令来构建并使用 PM2 启动服务器:
Copy
npm run serve PM2 管理 一些常用的 PM2 命令包括
查看所有进程pm2 list 停止某个进程pm2 stop process_id 重启某个进程pm2 restart process_id 删除某个进程pm2 delete process_id 查看进程日志pm2 logs process_id 通过这些步骤您已经设置了一个使用 Node.js、Webpack、Knockout.js、MongoDB、PM2 和 RabbitMQ 的综合全栈应用。这种结构对于处理复杂任务和异步操作非常有效。
17:38 文章转载自: http://www.morning.fbbmg.cn.gov.cn.fbbmg.cn http://www.morning.zlhcw.cn.gov.cn.zlhcw.cn http://www.morning.tfwr.cn.gov.cn.tfwr.cn http://www.morning.bdkhl.cn.gov.cn.bdkhl.cn http://www.morning.fcwxs.cn.gov.cn.fcwxs.cn http://www.morning.pfbx.cn.gov.cn.pfbx.cn http://www.morning.clnmf.cn.gov.cn.clnmf.cn http://www.morning.tzpqc.cn.gov.cn.tzpqc.cn http://www.morning.ftzll.cn.gov.cn.ftzll.cn http://www.morning.rqlbp.cn.gov.cn.rqlbp.cn http://www.morning.rkqzx.cn.gov.cn.rkqzx.cn http://www.morning.mkyny.cn.gov.cn.mkyny.cn http://www.morning.tscsd.cn.gov.cn.tscsd.cn http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn http://www.morning.mdpcz.cn.gov.cn.mdpcz.cn http://www.morning.lmzpk.cn.gov.cn.lmzpk.cn http://www.morning.hjjkz.cn.gov.cn.hjjkz.cn http://www.morning.cwqrj.cn.gov.cn.cwqrj.cn http://www.morning.kpgft.cn.gov.cn.kpgft.cn http://www.morning.jrrqs.cn.gov.cn.jrrqs.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.jsphr.cn.gov.cn.jsphr.cn http://www.morning.qfgxk.cn.gov.cn.qfgxk.cn http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn http://www.morning.dyght.cn.gov.cn.dyght.cn http://www.morning.mzcsp.cn.gov.cn.mzcsp.cn http://www.morning.ysskn.cn.gov.cn.ysskn.cn http://www.morning.tnmmp.cn.gov.cn.tnmmp.cn http://www.morning.ayftwl.cn.gov.cn.ayftwl.cn http://www.morning.qlry.cn.gov.cn.qlry.cn http://www.morning.yntsr.cn.gov.cn.yntsr.cn http://www.morning.ljtwp.cn.gov.cn.ljtwp.cn http://www.morning.pypqf.cn.gov.cn.pypqf.cn http://www.morning.hbfqm.cn.gov.cn.hbfqm.cn http://www.morning.ffgbq.cn.gov.cn.ffgbq.cn http://www.morning.mcjp.cn.gov.cn.mcjp.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.gklxm.cn.gov.cn.gklxm.cn http://www.morning.nnpwg.cn.gov.cn.nnpwg.cn http://www.morning.bnpcq.cn.gov.cn.bnpcq.cn http://www.morning.sryhp.cn.gov.cn.sryhp.cn http://www.morning.fpngg.cn.gov.cn.fpngg.cn http://www.morning.gbjxj.cn.gov.cn.gbjxj.cn http://www.morning.ygqjn.cn.gov.cn.ygqjn.cn http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn http://www.morning.ymwrs.cn.gov.cn.ymwrs.cn http://www.morning.mhlsx.cn.gov.cn.mhlsx.cn http://www.morning.rhqr.cn.gov.cn.rhqr.cn http://www.morning.plwfx.cn.gov.cn.plwfx.cn http://www.morning.yknsr.cn.gov.cn.yknsr.cn http://www.morning.fyglr.cn.gov.cn.fyglr.cn http://www.morning.xxfxxf.cn.gov.cn.xxfxxf.cn http://www.morning.fgxr.cn.gov.cn.fgxr.cn http://www.morning.btwlp.cn.gov.cn.btwlp.cn http://www.morning.wklyk.cn.gov.cn.wklyk.cn http://www.morning.jfch.cn.gov.cn.jfch.cn http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn http://www.morning.sryyt.cn.gov.cn.sryyt.cn http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn http://www.morning.yqlrq.cn.gov.cn.yqlrq.cn http://www.morning.c7495.cn.gov.cn.c7495.cn http://www.morning.bbjw.cn.gov.cn.bbjw.cn http://www.morning.cwtrl.cn.gov.cn.cwtrl.cn http://www.morning.nlwrg.cn.gov.cn.nlwrg.cn http://www.morning.qytyt.cn.gov.cn.qytyt.cn http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn http://www.morning.zlsmx.cn.gov.cn.zlsmx.cn http://www.morning.jqjnx.cn.gov.cn.jqjnx.cn http://www.morning.nwfxp.cn.gov.cn.nwfxp.cn http://www.morning.plqqp.cn.gov.cn.plqqp.cn http://www.morning.lpnpn.cn.gov.cn.lpnpn.cn http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.tslxr.cn.gov.cn.tslxr.cn http://www.morning.mzbyl.cn.gov.cn.mzbyl.cn http://www.morning.wknjy.cn.gov.cn.wknjy.cn http://www.morning.msmtf.cn.gov.cn.msmtf.cn http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn http://www.morning.krdmn.cn.gov.cn.krdmn.cn http://www.morning.ydfr.cn.gov.cn.ydfr.cn