如何利用nodejs搭建一个框架 如何一体化一个NodeJs的MVC开发框架

\u5982\u4f55\u7528Node\u53bb\u5199\u4e00\u4e2aWeb\u5e94\u7528\u6846\u67b6

\u7b2c\u4e00\u6b65\uff0c\u7528node\u8f93\u51fa\u4e00\u4e2ahello world
var http=require('http'); http.createServer(function(req,res){ var urlPares=url.parse(req.url); var query=querystring.parse(urlPares.query); res.end('hello world'); }).listen(80);\u5927\u90e8\u5206\u7684node\u6559\u7a0b\u5728\u8fd9\u91cc\u4f1a\u544a\u8bc9\u4f60\uff0c\u6211\u4eec\u5f88\u5bb9\u6613\u7684\u5efa\u7acb\u7684\u4e00\u4e2a\u670d\u52a1\u5668\u3002\u4f46\u662f\u5728\u5b9e\u9645\u4f7f\u6211\u4eec\u901a\u5e38\u4f7f\u7528\u7684\u662fexpress.(f**k,\u96be\u9053Node\u5fc5\u987b\u8981\u7528express\u5417\uff1f\u81ea\u5df1\u5b9e\u73b0\u4e00\u4e2aWeb\u5e94\u7528\u6846\u67b6\u771f\u7684\u5f88\u96be\u5417\uff1f\uff09\u5176\u5b9e\u5e76\u4e0d\u662f\u3002\u90a3\u4e48\u65e2\u7136\u6253\u7b97\u81ea\u5df1\u5199\u6211\u4eec\u9996\u5148\u8981\u77e5\u9053\u6211\u4eec\u8981\u505a\u54ea\u4e9b\u4e8b\u60c5\u3002 1.\u8def\u7531\u6216\u8005\u667a\u80fd\u8def\u7531 2.\u9759\u6001\u6587\u4ef6\u8f93\u51fa 3.session/cookie 4.\u6a21\u7248\u6e32\u67d3 5.\u6570\u636e\u5e93\u5904\u7406 6.\u6587\u4ef6\u4e0a\u4f20\u7b2c\u4e8c\u6b65\uff0c\u8def\u7531\u8def\u7531\u597d\u9ad8\u5927\u4e0a\u7684\u540d\u5b57\uff0c\u5b83\u662f\u5e72\u5565\u7684\uff1furl\u5bf9\u5e94\u5177\u4f53\u65b9\u6cd5\u5c31\u662f\u5b83\u8be5\u505a\u7684\u4e8b\u60c5\u3002 \u90a3\u4e48\u6211\u4eec\u4e3a\u4ec0\u4e48\u4e0d\u8ba9url\u5bf9\u5e94xxx\u6587\u4ef6\u7684xx\u65b9\u6cd5\u3002 \u4f8b\u5982\uff1a/user/login\u80fd\u4e0d\u80fd\u81ea\u52a8\u5bf9\u5e94\u5230user.js\u7684login\u65b9\u6cd5\u4e0a\u3002\u5b9e\u73b0\u8d77\u6765\u5f88\u96be\u4e48\uff1f\u5176\u5b9e\u53ea\u9700\u8981\u51e0\u53e5\u4ee3\u7801
var fs = require("fs"); module.exports=function(req,res){ var query=req.query; var urlPares=req.urlPares; var pathname=urlPares.pathname; var arr=pathname.split("/"); req.arr=arr; //start \u8fd9\u6bb5\u4ee3\u7801\u5904\u7406\u9ed8\u8ba4\u884c\u4e3a\u3002\u53ef\u4ee5\u5148\u5ffd\u7565 if(arr.length==0||arr.length==1){ arr=["","index","index"]; }else if(arr.length==2){ arr.push("index"); } if(arr[1]==""){ arr[1]="index"; } if(arr[2]==""){ arr[2]="index"; } //end \u8fd9\u6bb5\u4ee3\u7801\u5904\u7406\u9ed8\u8ba4\u884c\u4e3a\u3002\u53ef\u4ee5\u5148\u5ffd\u7565 if (fs.existsSync(APP_PATH+'/controller/'+arr[1]+'.js')){ var controller=require('./controller/'+arr[1]); if(controller[arr[2]]){ controller[arr[2]](req,res); }else{ res.writeHead(404,{'Content-Type': 'text/plain' }); res.end("\u4f60\u8bbf\u95ee\u7684\u63a7\u5236\u5668\u4e0d\u5b58\u5728\u6307\u5b9a\u65b9\u6cd5"); } }else{ res.writeHead(404,{'Content-Type': 'text/plain' }); res.end("\u4f60\u8bbf\u95ee\u7684\u8def\u5f84\u4e0d\u5b58\u5728"); } }\u901a\u8fc7fs\u5224\u65ad\u6587\u4ef6\u662f\u5426\u5b58\u5728\u3002\u7136\u540e\u53bbrequire\u5b83\u5c31\u884c\u4e86\u3002APP_PATH\u662f\u4e2a\u5168\u5c40\u53d8\u91cf\u8868\u793a\u7a0b\u5e8f\u5165\u53e3\u7684\u8def\u5f84\u3002\u7b2c\u4e09\u6b65\uff0c\u9759\u6001\u6587\u4ef6\u8f93\u51fa\u9759\u6001\u6587\u4ef6\u8f93\u51fa\u6211\u4eec\u9700\u8981\u4e00\u4e2a\u5e93MIME
var url = require("url"); var fs = require("fs"); var mime = require('mime'); /** * [[\u68c0\u6d4b\u662f\u5426\u4e3a\u9759\u6001\u8d44\u6e90]] * @param {Object} req [[Description]] * @param {[[Type]]} res [[Description]] * @returns {bool} [[Description]] */ module.exports = function (req, res) { //\u6b63\u5219\u8868\u8fbe\u5f0f\u68c0\u6d4b\u6587\u4ef6\u540e\u7f00 var url_resource_reg = /.*\.(html|htm|gif|jpg|jpeg|bmp|webp|htc|swf|png|ico|txt|js|css)/; if (!url_resource_reg.test(req.url)) { return false; } var urlPares = url.parse(req.url); var pathname = urlPares.pathname; var fileUrl = APP_PATH + "/static" + pathname; if (fs.existsSync(fileUrl)) { var contentType = mime.lookup(fileUrl); res.setHeader('Content-Type', contentType || "text/plain"); var fileStream = fs.createReadStream(fileUrl); fileStream.pipe(res); fileStream.on('end', function () { res.end(); }); return true; } else { return false; } } \u7b2c\u56db\u6b65\uff0csession/cookie\u8fd9\u91cc\u7a0d\u5fae\u6709\u70b9\u3002\u4f46\u662f\u4ee3\u7801\u91cf\u4e5f\u4e0d\u591a var sessions = {}; var sessionKey = 'session_key'; var EXPIRES = 30 * 60 * 1000; function randString(size) { var result = ''; var allChar = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; size = size || 1; while (size--) { result += allChar.charAt(rand(0, allChar.length - 1)); } return result; } var generate = function () { var session = {}; session.id = Date.now() + randString(12); session.cookies = { expire: Date.now() + EXPIRES } sessions[session.id] = session; return session; } var parseCookie= function (cookie) { var cookies = {}; if (!cookie) { return cookies; } var list = cookie.split(";"); for (var i = 0; i Date.now()) { session.cookies.expire = Date.now() + EXPIRES; req.session = session; } else { delete sessions[id]; req.session = generate(); } } else { req.session = generate(); } } for (var key in sessions) { if (sessions[key].cookies.expire < Date.now()) { delete sessions[key]; } } var writeHead = res.writeHead; res.writeHead = function () { delete req.cookies[ham_sessionKey]; var sessionStr = serialize(ham_sessionKey, req.session.id); res.setHeader('Set-Cookie', serializeCookies(req.cookies).concat(sessionStr)); return writeHead.apply(res, arguments); } }\u7b2c\u4e94\u6b65\uff0c\u6a21\u7248\u6e32\u67d3

\u8fd9\u662f\u6700\u7b80\u5355\u7684\u3002

\u7b2c\u516d\u6b65\uff0c\u6570\u636e\u5e93\u5904\u7406

\u8fd9\u91cc\u53ef\u4ee5\u662f\u7528\u4e00\u4e9bORM\u6846\u67b6\u3002

\u7b2c\u4e03\u6b65\uff0c\u6587\u4ef6\u4e0a\u4f20\uff0cpost


\u7b2c\u516b\u6b65\uff0c\u5c31\u662f\u4f60\u628a\u4e0a\u9762\u7684\u4ee3\u7801\u7ec4\u7ec7\u8d77\u6765\u3002

\u672c\u6846\u67b6\u9002\u5408\u4f7f\u7528NodeJs\u8fdb\u884cweb\u5f00\u53d1\u7684MVC\u6846\u67b6\u6a21\u5f0f\uff0c\u672c\u6846\u67b6\u4f7f\u7528\u4e86express\u6846\u67b6\u4f5c\u4e3anodejs\u7684web\u5f00\u53d1\u652f\u6491\uff0c\u4f7f\u7528mysql\u4f5c\u4e3a\u6570\u636e\u5e93\u5f00\u53d1\u6e90\uff0c\u4e0b\u9762\u6211\u4eec\u5c31\u7b80\u5355\u7684\u4ecb\u7ecd\u5982\u4f55\u5229\u7528\u672c\u6846\u67b6\u8fdb\u884c\u4e00\u4e2a\u7b80\u5355\u7684web\u5e94\u7528\u5f00\u53d1\u3002\u5f53\u7136\u672c\u6846\u67b6\u5e76\u975e\u5b98\u65b9\uff0c\u4e5f\u5e76\u975e\u4e13\u4e1a\u8bbe\u8ba1\uff0c\u5e0c\u671b\u5f00\u53d1\u8005\u5171\u540c\u6765\u628a\u672c\u6846\u67b6\u8bbe\u8ba1\u597d\uff0c\u4ee5\u4fbf\u6211\u4eec\u53ef\u4ee5\u5728\u56fd\u5185\u5b9e\u73b0\u4e00\u4e2aNodeJs\u7684Web\u5f00\u53d1\u6846\u67b6\u3002

\u4e00\u3001\u9879\u76ee\u6587\u4ef6\u5939\u4ecb\u7ecd

\u9879\u76ee\u6587\u4ef6\u5939\u4e3b\u8981\u662f\u6839\u636e\u4f20\u7edf\u7684MVC\u8bbe\u8ba1\u6a21\u5f0f\uff0c\u8bbe\u8ba1\u51fa\u6765\u7684\u6846\u67b6\u3002

enter image description here

\u4e8c\u3001 \u5165\u53e3\u6587\u4ef6\u4ecb\u7ecd

\u672c\u6846\u67b6\u7684\u5165\u53e3\u6587\u4ef6\u4e3aindex.js\uff0c\u8be5\u5165\u53e3\u4f60\u53ef\u4ee5\u6dfb\u52a0\u591a\u79cd\u5168\u5c40\u9759\u6001\u53d8\u91cf\uff0c\u4f8b\u5982\u4f60\u6240\u9700\u8981\u7684\u5404\u4e2a\u6587\u4ef6\u5939\u8def\u5f84\uff0c\u4ee5\u53ca\u4e00\u4e9b\u6a21\u5757\u3002

\u4e3e\u4f8b\u5982\u4e0b:

//========================\u5168\u5c40\u53d8\u91cf\u5b9a\u4e49===============================
global.BASE_DIR = __dirname;
global.APP = global.BASE_DIR + "/application/";
global.CON = global.APP + "/controller/";
global.CORE = global.APP + "/core/";
global.MODEL = global.APP + "/model/";
global.CONF = global.BASE_DIR + "/conf/";
global.log = global.BASE_DIR + "/log/";
global.PUBLIC = global.BASE_DIR + "/public/";
global.VIEW = global.BASE_DIR + "/view/";
/**



modules\u5f15\u5165
*/
global.express = require(\u2018express\u2019);
global.sio = require(\u2018socket.io\u2019);
global.fs=require(\u2018fs\u2019);
global.path = require(\u2018path\u2019);
global.url = require(\u2018url\u2019);
global.parseCookie = require(\u2018connect\u2019).utils.parseCookie;
global.MemoryStore = require(\u2018./node_modules/connect/lib/middleware/session/memory\u2019);
global.Session = require(\u2018./node_modules/connect/lib/middleware/session/session\u2019);
global.sys = require(\u2018util\u2019);


\u4ee3\u78012-1:index.js



\u5728index.js\u4e2d\u4f60\u9700\u8981\u5c06\u4f60\u6240\u6709\u7684\u6587\u4ef6\u5939\u8def\u5f84\u3001\u6a21\u5757\u4f7f\u7528\u5168\u5c40\u53d8\u91cf\u8fdb\u884c\u66ff\u6362\uff0c\u8be5\u65b9\u6cd5\u7684\u4f18\u52bf\u5728\u4e8e\uff0c\u907f\u514d\u7528\u6237\u5728\u7f16\u7801\u4e2d\u5f15\u5165\u8fc7\u957f\u7684\u6587\u4ef6\u8def\u5f84\uff0c\u53ea\u9700\u8981\u4f7f\u7528\u7b80\u5355\u7684\u53d8\u91cf\u8fdb\u884c\u66ff\u6362\u3002

urlResolve = require(CORE + \u201curl_resolve\u201d);
urlResolve.getActionInfo();
\u4ee3\u7801\uff1a2-2\uff1a\u8def\u7531\u5904\u7406\u903b\u8f91

\u672c\u4ee3\u7801\u5305\u542b\u8fdb\u903b\u8f91\u5904\u7406\u7c7b\uff0c\u540c\u65f6\u5e94\u7528\u903b\u8f91\u5904\u7406\u7c7b\u4e2d\u7684getActionInfo\u65b9\u6cd5\uff0c\u521b\u5efa\u670d\u52a1\u5668\uff0c\u5e76\u4e14\u5904\u7406url\u8bf7\u6c42\u903b\u8f91\u3002

\u4e09\u3001 \u8def\u7531\u5904\u7406\u903b\u8f91

\u4e3b\u8981\u6709\u516d\u4e2a\u65b9\u6cd5\uff0c\u5176\u4e2d\u7684getActionInfo\u662fexports\uff0c\u5176\u4ed6\u65b9\u6cd5\u5747\u4e3a\u79c1\u6709\u65b9\u6cd5\u3002

exports.getActionInfo = function(){
systemConfig();
app.get('/:key', function(req, res){
callUrlRequest(req, res);
});
app.post('/:key', function(req, res){
callUrlRequest(req, res);
});
listenPort();
};
function callUrlRequest(req, res){
var routerMsg = getUrlConf();
var key = req.params.key;
var session = checkSession(req, key);
if(key == "favicon.ico"){return;};
if(session == 0){
res.redirect('/index');
return;
}
console.log("[key:"+ key +"] " + "[class:" + routerMsg[key].cla + "] " + "[controller:" + routerMsg[key].fun +"]");
require(CON + routerMsg[key].con);
var controllerObj = eval("new " + routerMsg[key].cla);
controllerObj.init(req, res);
controllerObj[routerMsg[key].fun].call();
}
\u4ee3\u78012-3\uff1a\u8def\u7531\u5904\u7406getActionInfo
SystemConfig\u662f\u914d\u7f6eexpress\u6846\u67b6\u7684\u76f8\u5e94\u6570\u636e\uff0c\u914d\u7f6e\u9759\u6001\u6587\u4ef6\u5939\u4ee5\u53caexpress\u6846\u67b6\u7684\u76f8\u5e94\u914d\u7f6e\u6570\u636e\u3002\u4e4b\u540e\u6dfb\u52a0\u4e24\u79cdurl\u8bf7\u6c42\u65b9\u5f0f\uff0c\u5206\u522b\u662fget\u548cpost\u65b9\u6cd5\uff0c\u7531\u4e8e\u4e24\u79cd\u65b9\u6cd5\u8bf7\u6c42\u8d44\u6e90\u7684\u8def\u7531\u5904\u7406\u90fd\u662f\u4e00\u6837\u7684\uff0c\u56e0\u6b64\u4f7f\u7528callUrlRequest\u6765\u5904\u7406\u3002
callUrlRequest \u83b7\u53d6\u8def\u7531\u914d\u7f6e\u6587\u4ef6\u4fe1\u606fgetUrlConf\uff1b
2\u3001\u83b7\u53d6\u5f53\u524d\u8bbf\u95ee\u7684key\u503c\uff0c\u6839\u636ekey\u503c\u5f97\u5230\u76f8\u5e94\u7684\u914d\u7f6e\u4fe1\u606f\uff0c\u914d\u7f6e\u6587\u4ef6\u53ef\u4ee5\u5c55\u793a\u5982\u4e0b\uff1a
"test": {
"con" : "test",
"cla" : "test",
"fun" :"test"
},
"favicon.ico" : {
"con" : "",
"cla" : "",
"fun" : ""
},
"login" : {
"con" : "index_controller",
"cla" : "IndexController",
"fun" : "loginAct"
},
"index" : {
"con" : "index_controller",
"cla" : "IndexController",
"fun" : "loginPageAct"
},
"loginS" : {
"con" : "index_controller",
"cla" : "IndexController",
"fun" : "toMainPageAct"
}
}
\u4ee3\u78012-4\uff1a\u914d\u7f6e\u6587\u4ef6\u4fe1\u606f
\u5982\u679c\u5f53\u524dkey\u4e3atest\u90a3\u4e48\u6211\u4eec\u5c31\u53ef\u4ee5\u5f97\u5230\u76f8\u5e94\u7684controller\u3001class\u548cfunction\u3002\u540c\u65f6\u56e0\u4e3anodejs\u670d\u52a1\u5668\u6bcf\u6b21\u8bf7\u6c42\u6570\u636e\u7684\u65f6\u5019\u90fd\u4f1a\u52a0\u5165favicon.ico\uff0c\u56e0\u6b64\u5728\u4ee3\u7801\u4e2d\u6211\u4eec\u9700\u8981\u5c06\u5176\u5254\u9664\u3002\u5bf9\u4e8echeckSession\u5c31\u662f\u9a8c\u8bc1\u767b\u5f55\u4fe1\u606f\u3002
3. \u5f97\u5230controller\u3001class\u548cfunction\uff0c\u9996\u5148require\u76f8\u5e94\u7684controller\uff0c\u7136\u540e\u4f7f\u7528eval\u6765new\u76f8\u5e94\u5bf9\u8c61\uff0c\u4f7f\u7528controllerObj[routerMsg[key].fun].call();\u8be5\u65b9\u6cd5\u8fdb\u884c\u8c03\u7528\u3002\uff08\u672c\u90e8\u5206\u5904\u7406\uff0c\u6d89\u53ca\u5230\u4e00\u4e2aJavaScript\u7684\u5c0f\u6280\u5de7\uff0c\u5982\u4f55\u5bf9\u4e00\u4e2a\u5b57\u7b26\u4e32\u8fdb\u884cnew\uff0c\u540c\u65f6\u8c03\u7528\u4e00\u4e2a\u5bf9\u8c61\u7684\u65b9\u6cd5\uff0c\u8be5\u65b9\u6cd5\u540d\u4e3a\u5b57\u7b26\u4e32\u53d8\u91cf\uff09
4. \u6700\u540e\u5c31\u662flistenPort();\u8fdb\u884c\u76d1\u542c\u4e8b\u4ef6\uff0c\u4e5f\u662f\u670d\u52a1\u5668\u5f00\u59cb\u542f\u52a8\u3002\u8fd9\u6837\u4e00\u4e2a\u57fa\u672c\u7684\u8def\u7531\u5904\u7406\u5c31\u5b8c\u6210\u5b9e\u73b0\u4e86\u3002
**\u56db\u3001 \u6570\u636e\u5c42\u5b9e\u73b0**
\u672c\u7cfb\u7edf\u6570\u636e\u5c42\u57fa\u7c7b\u662f\u5728core\u6587\u4ef6\u5939\u4e0b\u7684base_model.js\uff0c\u8be5\u7c7b\u4e3b\u8981\u5305\u542b\u6570\u636e\u5e93\u7684\u4e00\u822c\u65b9\u6cd5\uff0c\u4e3b\u8981\u542b\u6709\u6570\u636e\u5e93\u94fe\u63a5\u3001\u6570\u636e\u5e93\u64cd\u4f5c\u57fa\u672c\u65b9\u6cd5add\u3001update\u3001deleteItem\u3001query\u3001select\u7b49\uff0c\u5177\u4f53\u5b9e\u73b0\u65b9\u5f0f\uff0c\u5c31\u4e0d\u7ec6\u8bb2\u3002
BaseModel\u4e3a\u57fa\u7c7b\uff0c\u5176\u4ed6\u5bf9\u5e94\u4e8e\u76f8\u5e94\u7684\u8868\u7684\u7c7b\u90fd\u7ee7\u627f\u6765\u81eaBaseModel\u57fa\u7c7b
\u7ee7\u627f\u65b9\u6cd5\u4f7f\u7528JavaScript\u7684\u539f\u578b\u7ee7\u627f\uff1a
IndexController.prototype = new BaseController();
global.IndexController = IndexController;
**\u4e94\u3001 \u903b\u8f91\u5c42\u5b9e\u73b0**
\u7c7b\u540c\u4e8e\u6570\u636e\u5c42\u7684\u5b9e\u73b0\u65b9\u6cd5\uff0c\u5176\u7ee7\u627f\u90fd\u662f\u6765\u81ea\u4e8e\u57fa\u7c7bBaseController\uff0cBaseController\u73b0\u53ea\u5305\u542b\u4e09\u4e2a\u65b9\u6cd5\uff1ainit\u3001displayHtml\u3001displayJade\u3002
**\u516d\u3001 \u4ee3\u7801\u89c4\u8303
** \u672c\u6846\u67b6\u4e0d\u8981\u6c42\u5f00\u53d1\u8005\u662f\u5982\u4f55\u53bb\u5b9a\u4e49\u4ee3\u7801\u89c4\u8303\uff0c\u4f46\u672c\u6846\u67b6\u5b9e\u73b0\u7684\u4ee3\u7801\u89c4\u8303\u662f\u5982\u4e0b\uff1a
\u53d8\u91cf\u547d\u540d\uff1a\u79c1\u6709\u53d8\u91cf\u7edf\u4e00\u4f7f\u7528\u201d_name\u201d\uff0c\u5168\u5c40\u53d8\u91cf\u4f7f\u7528\u5927\u5199\u201dVIEW\u201d\uff0c\u7b80\u5355\u53d8\u91cf\u8bf7\u4f7f\u7528\u9a86\u9a7c\u5cf0\u201dmyName\u201d
\u65b9\u6cd5\u547d\u540d\uff1a\u6240\u6709\u65b9\u6cd5\u8bf7\u4f7f\u7528\u9a86\u9a7c\u5cf0\u201dgetUrlRequest\u201d
\u7c7b\u547d\u540d\uff1a\u7edf\u4e00\u4f7f\u7528\u9996\u5b57\u6bcd\u5927\u5199\u9a86\u9a7c\u5cf0\u201dBaseController\u201d
\u6587\u4ef6\u547d\u540d\uff1a\u7edf\u4e00\u4f7f\u7528\u4e0b\u5212\u7ebf\u5206\u5272\uff0c\u7c7b\u4f7f\u7528\u4e0b\u5212\u7ebf\u5206\u5272base_controller.js
\u603b\u7ed3\uff1a\u6574\u4f53\u4e0a\u5c31\u53ef\u4ee5\u5b9e\u73b0\u4e00\u4e2aMVC\u5f00\u53d1\u7684MyWeb\u6846\u67b6\uff0c\u5176\u4e2d\u7684\u65b9\u6cd5\u4ee5\u53ca\u5b9e\u73b0\u90fd\u8fd8\u662f\u5904\u4e8e\u7a1a\u5ae9\u671f\uff0c\u5e0c\u671b\u6709\u5f00\u53d1\u8005\u613f\u610f\u52a0\u5165\uff0c\u5e76\u4e14\u80fd\u591f\u56e2\u961f\u5408\u4f5c\u5f00\u53d1\u51fa\u6211\u4eec\u56fd\u5185\u4f18\u79c0\u7684NodeJs\u7684MVC\u6846\u67b6\u3002

\u5e0c\u671b\u5927\u5bb6\u662f\u4e00\u8d77\u4ea4\u6d41\u5b66\u4e60\uff0c\u8fd9\u91cc\u8fd8\u6709\u5f88\u591a\u4e0d\u8db3\uff0c\u5e0c\u671b\u5927\u5bb6\u4e00\u540c\u6539\u8fdb~

获取Node安装包,可以访问以下Node.js框架官方网址:

在该页面中,我们可以看到适用于不同操作系统的、各个版本的Node安装包源文件,选中我们需要的版本类型直接下载就可以了。

2

在Windows操作系统环境下安装Node.js框架,直接运行下载好的Node安装包      源文件即可,目的路径一般选择如下:

D:/nodejs/

3

安装完毕后,读者可以到该目录下浏览一下具体内容,这样会对Node环境有一个大致的了解。



  • 濡備綍鍒╃敤nodejs鎼缓涓涓鏋
    绛旓細鍦╓indows鎿嶄綔绯荤粺鐜涓嬪畨瑁匩ode.js妗鏋讹紝鐩存帴杩愯涓嬭浇濂界殑Node瀹夎鍖 婧愭枃浠跺嵆鍙紝鐩殑璺緞涓鑸夋嫨濡備笅锛欴:/nodejs/ 3 瀹夎瀹屾瘯鍚庯紝璇昏呭彲浠ュ埌璇ョ洰褰曚笅娴忚涓涓嬪叿浣撳唴瀹癸紝杩欐牱浼氬Node鐜鏈変竴涓澶ц嚧鐨勪簡瑙c傛柟娉/姝ラ2 鍦║buntu锛圠inux锛夌幆澧冧笅闇瑕佽繍琛宎pt鍛戒护杩涜瀹夎锛屽叿浣撴柟娉曞涓嬶細sudo apt-g...
  • 濡備綍鎼缓webdriver+selenium+nodejs鑷姩鍖栨祴璇曟鏋
    绛旓細鎵撳紑nodejs 浠庡紑濮嬬▼搴忎腑閫夋嫨Node.js--->Node.js command prompt 3 鍦ㄥ懡浠ょ獥鍙h緭鍏ヤ互涓嬪懡浠 涓銆乶pm install webdreverio -g 浜屻乶pm install selenium-standalone@latest -g 4 瀹夎selenium鏈嶅姟锛屽湪鍛戒护绐楀彛杈撳叆浠ュ強涓嬪懡浠 selenium-standalone install 姝ゆ椂浼氭姤閿欙紝鍛婅瘔浣營E鍜岃胺姝岄┍鍔ㄥ畨鎺掍笉鎴愬姛 瑙e喅...
  • 濡備綍鍒╃敤nodejs涓殑express鐨勬鏋
    绛旓細棣栧厛锛屽畨瑁匛xpress 妗嗘灦鍏ㄥ眬浣跨敤NPM锛屼互渚垮畠鍙互琚敤鏉浣跨敤Node缁堢鍒涘缓Web搴旂敤绋嬪簭銆俷pm install express --save 涓婇潰鐨勫懡浠ゅ湪鏈湴node_modules鐩綍淇濆瓨瀹夎锛屽苟鍒涘缓涓涓鐩綍express鍦╪ode_modules閲岃竟銆傝繕鏈夛紝搴旇浣跨敤express瀹夎浠ヤ笅鍑犱釜閲嶈鐨勬ā鍧楋細body-parser - 杩欐槸涓涓狽ode.js涓棿浠跺鐞咼SON锛孯aw锛屾枃鏈...
  • 濡備綍涓浣撳寲涓涓狽odeJs鐨凪VC寮鍙戞鏋
    绛旓細鍦╥ndex.js涓綘闇瑕佸皢浣犳墍鏈夌殑鏂囦欢澶硅矾寰勩佹ā鍧椾娇鐢ㄥ叏灞鍙橀噺杩涜鏇挎崲锛岃鏂规硶鐨勪紭鍔垮湪浜庯紝閬垮厤鐢ㄦ埛鍦ㄧ紪鐮佷腑寮曞叆杩囬暱鐨勬枃浠惰矾寰勶紝鍙渶瑕佷娇鐢ㄧ畝鍗曠殑鍙橀噺杩涜鏇挎崲銆倁rlResolve = require(CORE + 鈥渦rl_resolve鈥);urlResolve.getActionInfo();浠g爜锛2-2锛氳矾鐢卞鐞嗛昏緫 鏈唬鐮佸寘鍚繘閫昏緫澶勭悊绫伙紝鍚屾椂搴旂敤閫昏緫...
  • 鐢╪odejs鍋氱殑椤圭洰鎬庝箞鐐瑰垹闄ゅ悗寮瑰嚭鐨勭獥鍙?
    绛旓細濡傛灉鎮ㄤ娇鐢 Node.js 寮鍙戦」鐩紝骞跺笇鏈涘湪鐢ㄦ埛鐐瑰嚮鈥滃垹闄も濇寜閽悗寮瑰嚭纭妗嗭紝閭d箞鎮ㄥ彲浠ヤ娇鐢 JavaScript 鐨 confirm 鏂规硶鏉ュ疄鐜銆備緥濡傦紝浠ヤ笅浠g爜婕旂ず浜嗗浣曞湪鐐瑰嚮鈥滃垹闄も濇寜閽悗寮瑰嚭纭妗嗭細// 鍦ㄧ偣鍑烩滃垹闄も濇寜閽椂寮瑰嚭纭妗 document.getElementById('delete-button').addEventListener('click', function(...
  • node 鎬庝箞瀹炵幇寮规鏁堟灉
    绛旓細棣栧厛浣犲緱鏈変竴涓娴忚鍣ㄥ彂璧稨TTP璇锋眰锛 nodejs 鏍稿績api閲岄潰鐨刢hildprocess 妯″潡鍙互鎵ц shell 骞跺皢 缁撴灉鑾峰彇鍒般
  • nodejs 浣跨敤express鎼缓妗鏋舵绘槸鎶ラ敊銆
    绛旓細璇峰厛纭浣犲畨瑁呬簡express-generator锛 express妗嗘灦鏈韩涓嶅甫鐢熸垚鍔熻兘銆俷pm install express-generator -g 鍏舵锛岄伩鍏嶆枃浠跺す瀹屾暣璺緞涓寘鍚腑鏂囥佺┖鏍肩瓑鐗规畩瀛楃銆傛渶濂浣跨敤绠$悊鍛樻ā寮忔墦寮鍛戒护琛岋紝鍚﹀垯鍙兘閬囧埌鏃犳硶鍐欏叆鏂囦欢鐨勯棶棰樸
  • 濡備綍鐢╪odejs蹇鎼缓缃戠珯
    绛旓細node.js蹇鎼缓缃戠珯鍙互浣跨敤涓浜泈eb妗嗘灦 1锛氫娇鐢╡xpress 2锛氫娇鐢╧oa 濡傛灉寮鍙戝伐鍏蜂娇鐢ㄧ殑鏄痺ebstorm鐨勮瘽锛岃宸ュ叿鍐呴儴灏卞彲浠鍒涘缓鍩轰簬express鐨勯」鐩
  • nodejs鍐呯疆妯″潡鏈夊摢浜
    绛旓細涓銆丒xpress妗嗘灦 鍓嶉潰鐨勭珷鑺傚凡缁忎粙缁嶈繃浜,鍙互浣跨敤npm鏉ュ畨瑁卬ode.js妯″潡銆傚叿浣撴搷浣滆鍙傜収浠ュ墠鍐欑殑nodejs姒傝銆 Express鏄涓涓猲odejs鐨剋eb寮婧愭鏋,鐢ㄤ簬蹇熺殑鎼缓web椤圭洰銆傚叾涓昏闆嗘垚浜唚eb鐨刪ttp鏈嶅姟鍣ㄧ殑鍒涘缓銆侀潤鎬佹枃鏈鐞嗐佹湇鍔″櫒URL鍦板潃璇锋眰澶勭悊銆乬et鍜宲ost璇锋眰澶勭悊鍒嗗彂銆乻ession澶勭悊绛夊姛鑳姐 浣跨敤鏂规硶,鍦╟md涓墦寮浣...
  • Visual Studio Code涓濡備綍鎼缓骞惰繍琛NodeJS鐜
    绛旓細1銆侀鍏堟垜浠墦寮Visual Studio Code杞欢锛屽睍寮璧勬簮绠$悊鍣紝鐒跺悗鐐瑰嚮鎵撳紑鏂囦欢澶规寜閽紝濡備笅鍥炬墍绀 2銆佹帴涓嬫潵鍦ㄥ脊鍑虹殑瀵硅瘽妗涓柊寤轰竴涓猦ello鏂囦欢澶癸紝濡備笅鍥炬墍绀猴紝閫夋嫨鏂板缓鐨勬枃浠跺す 3銆佺劧鍚庡湪鏂囦欢澶逛腑鏂板缓涓涓狫S鏂囦欢锛屽涓嬪浘鎵绀猴紝娉ㄦ剰涓瀹氱‘淇滼S鏂囦欢鍦ㄦ枃浠跺す涓嬮潰 4銆佹帴涓嬫潵鎴戜滑鎵撳紑JS鏂囦欢锛屽湪鍏朵腑杈撳叆涓浜汮S...
  • 扩展阅读:为什么没人用nodejs做后端 ... 小程序安装nodejs ... 免费一键搭建网站 ... nodejs搭建web服务器 ... 新手入门nodejs教程 ... 安卓手机怎么搭建外网 ... nodejs编程入门教程 ... vue必须用nodejs吗 ... emjsx是什么造价软件 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网