1、NodeJs 寫的一份源碼該怎麼使用??
var cookie = require('cookie');
mole.exports = function (req, res, conf, views, db) {
..var body = req.body,
....id = req.ids[0],
....usid = cookie.parse(req.headers.cookie).usid;
..function redirect () {
....res.writeHead(302, { 'location' : '/accounts' });
....res.end();
..}
..function joinpage () {
....res.writeHead(200, { 'Content-Type' : 'text/html;charset=utf-8' });
....res.write(views.ACCOUNTS_JOIN);
....res.write(views.unit({
......id : 'accounts_menu',
......name : 'accounts_menu',
........options : {
..........class_id : id
........}
....}));
....res.write(views.unit({
......id : 'accounts_join',
......name : 'accounts_join',
......options : {
........action : '/accounts/' + id + '/join',
........num : '0'
......}
....}));
....res.end(views.FOOTER);
..}
..db.session(usid, function (state) {
....// 已經建立會話
....if (state) {
......joinpage();
......return;
....}
....// 沒有建立會話
....redirect();
..});
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////
這段代碼,是nodejs其中一個路由處理函數.
使用到了views視圖模型,db資料庫模型,以及conf全局配置文件.
並且使用了cookie模塊來解析會話ID.
views視圖模型 : 生產HTML界面 [可以隨時切換到PC或者移動HTML,介面一致]
db數據模型 : 生產資料庫數據
conf全局配置文件 :你所需要的全局環境內容
代碼的功能:
檢測請求
....是否建立會話?
........是,跳轉到"/"路由
........否,為用戶顯示登錄界面
其中views負責生產視圖界面, 在views模型中緩存了大量的常量,類似ACCOUNTS_JOIN,是頁面布局。
對於其中的動態內容,採用facebook的bigpipe技術。
views.unit(/*id, name, css, js, content*/)輸出script片段,分流到瀏覽器渲染。
整個伺服器端在啟動時渲染完畢所有的頁面布局體,並緩存到views模型中,動態內容由bigpipe發送到前端渲染。
2、nodejs模塊源碼能直接使用嗎
可以。copy
NodeJS 定義了一個 node_moles 目錄。例如某個的絕對路徑是 /home/user/hello.js,在該中使用 require('foo/bar') 方式載入時,則 NodeJS 依次嘗試使用以下路徑。
/home/user/node_moles/foo/bar
/home/node_moles/foo/bar
/node_moles/foo/bar
....
以上部分代碼示例。
3、nodejs好的cms有哪些,各位推薦下
建議您嘗試一下DoraCMS,Nodejs+express+mongodb編寫的一套內容管理系統。DoraCMS開源沒多久,但是已獲得很多前端開發者的關注。目前市面上有很多內容管理系統(如織夢、帝國等),都是以php為基礎編寫的,而DoraCMS則是基於nodejs,只要有基本的前端開發經驗和少量的js,就很容易上手。DoraCMS創建的目的是為了更深入的了解nodejs並付諸實踐,開源的目的也是為了通過案例來不斷改進我們的nodejs水平,共同提高;其次
DoraCMS結構清晰、模塊簡單,上手很容易。目前市面的cms結構復雜,想要自己修改定製學習成本比較高。初識nodejs的開發者可以了解一個
cms實現的基礎過程,熟悉nodejs的也可以用DoraCMS 來進行二次開發,不用再從頭開始。DoraCMS
遵循MIT協議完全開源,您可以自由定製屬於你自己的網站而不必花很多時間去處理最基礎的一些東西,為了讓更多的人去了解和認識nodejs,於是
DoraCMS 誕生了。
DoraCMS是基於Nodejs+express+mongodb編寫的一套內容管理系統,結構簡單,較目前一些開源的cms,doracms易於拓展,特別適合前端開發工程師做二次開發。
4、如何對nodejs代碼加密?國內,除了 jshaman 還有別的nodejs保護提供商嗎?
可以用webpack 進行混淆,因為最近的一個項目用electron 寫東西,boss想增加一點被破解的成本
source:
var webpack = require(『』);
var path = require(『path』);
let config = {
entry: {
main: path.resolve(__dirname, 『src/main.js』)
},
output: {
path: path.resolve(__dirname, 「dist」),
publicPath: 『./dist/』,
libraryTarget: 『commonjs』,
filename: 『[name].js』
},
mole: {
loaders: [
{
test: /.json$/,
loader: 『json』
},
{test: /.js?$/, loader: 『babel』, exclude: /node_moles/},
{
test: /.(png|jpe?g|gif|svg)(?.*)?$/,
loader: 『url?limit=1』
}
]
},
vue: {
loaders: {}
},
babel: {
presets: [『es2015』],
plugins: [『transform-runtime』]
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
mangle: {
except: [』$super』, 『$』, 『exports』, 『require』]
}
})
],
watchOptions: {
aggregateTimeout: 1000,
poll: 2000
},
resolve: {
alias: {
reportConf: path.resolve(__dirname, 『./src/config.js』)
}
},
externals: {
「fs」: 「fs」,
「url」: 「url」,
「path」: 「path」,
「crypto」: 「crypto」,
「async」: 「async」,
「canvas」: 「canvas」,
「gm」: 「gm」,
「xlsx」: 「xlsx」,
「lodash」: 「lodash」,
「mkdirp」: 「mkdirp」,
「pdfkit」: 「pdfkit」,
「electron」: 「electron」,
「node-notifier」: 「node-notifier」,
「electron-json-storage」: 「electron-json-storage」
}
};
if (process.env.NODE_ENV == 『dev』) {
config.resolve.alias.reportConf = path.resolve(__dirname, 『./src/config.dev.js』);
}
mole.exports = config;
說明 :
libraryTarget: 『commonjs』, 打包方式
externals:{
…
},排除引用到的node_mole
new webpack.optimize.UglifyJsPlugin 核心了
當然也可以用gulp ,grunt 等進行,
實現的效果就是,你的整個node_mole 被壓縮,混淆在一個min.js 裡面了
5、請問國內有沒有用nodejs開發的微商城源碼,比較完備的?
可以去H5e看看,HTML5課程融合了HTML5開發基礎課程、CSS3基礎課程和移動前端交互JavaScript+JQuery+Ajex,還有微信開發課程
6、wemall的微商城源碼到底是用的thinkphp還是nodejs,到底哪個好?
wemall商城源碼現在上線的除了6.0的都是用php來開發的,現在正在預約的新品都是node.js來開發的
7、nodejs怎麼把html以源碼的形式在網頁中顯示了,而不是解析它
可以通過設置輸出到瀏覽器的'Content-Type的值為text/html即文本類型的html即可實現將html代碼發送到瀏覽器中解釋,而如果設置的值為text/plain則值會顯示為文本而不會被瀏覽器渲染。
代碼實例如下:
const http = require('http');運行的結果如下:
8、nodejs為什麼把頁面全部變成了源碼在瀏覽器上顯示
響應的 Content-Type 設置成 text/plain 是以文本形式輸出。
設置成 text/html 則是讓瀏覽器解析文檔。
9、請問wemall的微商城源碼到底是nodejs開發的還是thinkphp?
兩者都有,前面幾個版本都是thinkphp。最近新出的單用戶和全棧是nodejs。。建議關注NOTEJS。要比PHP的性能好上很多。,現在大型的源碼都在往NOTEJS上發展,是個趨勢。