Node.js學習日記7
1.siblings()方法
解析:siblings()方法返回被選元素的所有同級元素。同級元素是共享相同父元素的元素。查詢每個p元素的所有類名為"selected"的所有同胞元素:
$("p").siblings(".selected")
2.:checkbox選擇器
解析:選取所有帶有type="checkbox"的<input>
元素:
$(":checkbox")
3.$(“input:not(:checked)”)
解析:
[1]:checked是選擇處於選中狀態的核取方塊或單選按鈕元素
[2]:not(:checked)是選擇處於非選中狀態的核取方塊或單選按鈕元素
4.$("#lastname")
解析:id="lastname"的元素。
5.prop()方法
解析:prop()方法設定或返回被選元素的屬性和值。當該方法用於返回屬性值時,則返回第一個匹配元素的值。
6.<pre>
標籤
解析:pre元素可定義預格式化的文字。被包圍在pre元素中的文字通常會保留空格和換行符。而文字也會呈現為等寬字型。
7.EJS標籤含義
解析:
[1]<%
:‘指令碼’標籤,用於流程控制,無輸出
[2]<%_
:刪除其前面的空格符
[3]<%=
:輸出資料到模板(輸出是轉義HTML標籤)
[4]<%-
:輸出非轉義的資料到模板
[5]<%#
:註釋標籤,不執行、不輸出內容
[6]<%%
:輸出字串’<%’
[7]%>
:一般結束標籤
[8]-%>
:刪除緊隨其後的換行符
[9]_%>
:將結束標籤後面的空格符刪除
8.利用session記錄使用者訪問網站次數
解析:
if(req.session.times){
req.session.times++;
}else{
req.session.times=1;
}
9.將view engine設定為ejs
解析:
app.set('views',path.join(__dirname , 'views') );
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
10.Mongoose
解析:Mongoose為模型提供了一種直接的,基於scheme結構去定義你的資料模型。它內建資料驗證,查詢構建,業務邏輯鉤子等,開箱即用。如下所示:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
});
var kittySchema = mongoose.Schema({
name: String
});
var Kitten = mongoose.model('Kitten', kittySchema);
var felyne = new Kitten({ name: 'Felyne' });
console.log(felyne.name);
11.exports和module.exports區別
解析:
[1]module.exports初始值為一個空物件{}
[2]exports是指向的module.exports的引用
[3]require()返回的是module.exports而不是exports
12.Proxy建構函式
解析:var proxy = new Proxy(target, handler);如下所示:
Proxy物件的所有用法,都是上面這種形式,不同的只是handler引數的寫法。其中,newProxy()表示生成一個Proxy例項,target參數列示所要攔截的目標物件,handler引數也是一個物件,用來定製攔截行為。
13.async函式
解析:
[1]在普通函式前加async操作符可以定義async函式。
[2]async函式體中的程式碼是非同步執行的,不會阻塞後面程式碼執行,但它們的寫法和同步程式碼相似。
[3]async函式會返回一個已完成的promise物件,實際在使用的時候會和await操作符配合使用。
14.express.Router
解析:在myblog目錄下建立空資料夾routes,在routes目錄下建立index.js和users.js。如下所示:
[1]index.js
const express = require('express')
const app = express()
const indexRouter = require('./routes/index')
const userRouter = require('./routes/users')
app.use('/', indexRouter)
app.use('/users', userRouter)
app.listen(3000)
[2]routes/index.js
const express = require('express')
const router = express.Router()
router.get('/', function (req, res) {
res.send('hello, express')
})
module.exports = router
[3]routes/users.js
const express = require('express')
const router = express.Router()
router.get('/:name', function (req, res) {
res.send('hello, ' + req.params.name)
})
module.exports = router
說明:將/和/users/:name的路由分別放到了routes/index.js和routes/users.js中,每個路由檔案通過生成一個express.Router例項router並匯出,通過app.use掛載到不同的路徑。在實際開發中推薦使用express.Router將不同的路由分離到不同的路由檔案中。
15.Node.js模組
解析:
[1]connect-mongo:將session儲存於mongodb,結合express-session使用
[2]connect-flash:頁面通知的中介軟體,基於session實現
[3]express-formidable:接收表單及檔案上傳的中介軟體
[4]config-lite:讀取配置檔案
[5]marked:markdown解析
[6]mongolass:mongodb驅動
[7]objectid-to-timestamp:根據ObjectId生成時間戳
[8]sha1:sha1加密,用於密碼加密
[9]winston:日誌
[10]express-winston:express的winston日誌中介軟體
16.ESLint
解析:ESLint是一個程式碼規範和語法錯誤檢查工具。使用ESLint可以規範程式碼書寫,可以在編寫程式碼期間就能發現一些低階錯誤。
17.EditorConfig
解析:EditorConfig是一個保持縮排風格的一致的工具,當多人共同開發一個專案的時候,往往會出現每個人用不同編輯器的情況,而且有的人用tab縮排,有的人用2個空格縮排,有的人用4個空格縮排,EditorConfig就是為了解決這個問題而誕生。.editorconfig檔案,如下所示:
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
tab_width = 2
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
這裡使用2個空格縮排,tab長度也是2個空格。trim_trailing_whitespace用來刪除每一行最後多餘的空格,insert_final_newline用來在程式碼最後插入一個空的換行。
18.config-lite
解析:config-lite是一個輕量的讀取配置檔案的模組。config-lite會根據環境變數[NODE_ENV]的不同載入config目錄下不同的配置檔案。如果不設定NODE_ENV,則讀取預設的default配置檔案,如果設定了NODE_ENV,則會合並指定的配置檔案和default配置檔案作為配置,config-lite支援.js、.json、.node、.yml、.yaml字尾的檔案。config/default.js如下所示:
module.exports = {
port: 3000,
session: {
secret: 'myblog',
key: 'myblog',
maxAge: 2592000000
},
mongodb: 'mongodb://localhost:27017/myblog'
}
19.connect-flash
解析:connect-flash是基於session實現的,它的原理很簡單:設定初始值req.session.flash={},通過req.flash(name,value)設定這個物件下的欄位和值,通過req.flash(name)獲取這個物件下的值,同時刪除這個欄位,實現了只顯示一次重新整理後消失的功能。
20.Express許可權控制
解析:可以把使用者狀態的檢查封裝成一箇中介軟體,在每個需要許可權控制的路由載入該中介軟體,即可實現頁面的許可權控制。
21.mocha和supertest
解析:mocha和supertest是常用的測試組合,通常用來測試restful的api介面。
22.pm2
解析:pm2是Node.js下的生產環境程式管理工具,就是我們常說的程式守護工具,可以用來在生產環境中進行自動重啟、日誌記錄、錯誤預警等等。
23.HTML5 Boilerplate
解析:HTML5 Boilerplate幫助構建快速,健壯,並且適應力強的webapp或網站。這個小小的原始碼包集合了100位開發者的經驗,可以將這些經驗運用在專案中。
24.Cordova
解析:使用HTML、CSS & JS進行移動App開發,多平臺共用一套程式碼。
25.Yeoman
解析:Yeoman是現代化前端專案的腳手架工具,用於生成包含指定框架結構的工程化目錄結構。
參考文獻:
[1]EJS[高效的JavaScript模板引擎]:https://ejs.bootcss.com/
[2]Mongoose:http://www.mongoosejs.net/
[3]ECMAScript 6入門:http://es6.ruanyifeng.com/
[4]async函式:http://es6.ruanyifeng.com/#docs/async
[5]JavaScript Promise迷你書:http://liubin.org/promises-book
[6]nswbmw/N-blog:https://github.com/nswbmw/N-blog
[7]nswbmw/N-blog:https://github.com/nswbmw/N-blog
[8]HTML5 Boilerplate:https://www.bootcss.com/p/html5boilerplate/
[9]Cordova中文網:http://cordova.axuer.com/
[10]Cordova:https://cordova.apache.org/
[11]Yeoman:https://yeoman.io/
相關文章
- 學習日記-24/7/26
- ABP VNext學習日記7
- Node.js學習筆記Node.js筆記
- 學習日記
- Node.js學習筆記(一)Node.js筆記
- Node.js學習筆記1Node.js筆記
- <node.js學習筆記(2)>Node.js筆記
- <node.js學習筆記(1)>Node.js筆記
- Flutter學習日記Flutter
- JDBC學習日記JDBC
- flashback學習日記
- SAP 學習日記
- 學習日記-9.2
- 《Node.js實戰》學習筆記Node.js筆記
- 3月21日學習日記
- 3月22日學習日記
- CCNA學習筆記7筆記
- perl學習筆記(7)筆記
- Babel 學習日記(0)Babel
- WPF學習日記11
- WPF學習日記9
- WPF學習日記29
- Android學習日記....Android
- informatica 學習日記整理ORM
- PL/SQL 學習日記SQL
- 學習日記:定時
- Swift學習日記--二Swift
- BUUCTF pwn學習日記
- 學習日記 - 9.11
- 6月7日學習進度
- Oracle DBA學習日記筆記Oracle筆記
- Node.js學習筆記----day04Node.js筆記
- Node.js stream(流) 學習筆記(一)Node.js筆記
- 百度影像分割7日打卡訓練營學習筆記筆記
- python學習記錄7Python
- Android學習筆記(7)Android筆記
- wp7學習筆記筆記
- 爬蟲學習日記(六)爬蟲