⑴ nodejs官方為什麼推薦jade
Jade有兩點是超出傳統模板技術的。
第一、簡潔。
注意,簡潔並非單指更少的符號,而是看是否能match你的需要。Jade強制的縮進格式能凸顯html的結構,而對於前端來說,最重要的任務恰恰是處理結構,而不像一般的html author那樣是處理內容。反過來說,假如你的主要任務是處理內容,比如寫作blog之類的,那你應該用wiki或者markdown之類的,而不應該用Jade。
第二、html-aware
傳統模板技術其實是通用模板,即模板引擎並不care你輸出的是html還是其他格式的文本。而Jade專為HTML設計,因此可以做許多傳統模板做不到的專門針對html的優化。舉個幾個簡單的例子:
1. 決定如何輸出屬性(當屬性賦值為null/false時不輸出屬性,為true時只需屬性不需要值,這在傳統模板里寫起來很麻煩、代碼難看易出錯)
2. 自動產生well-formed結構(甚至可決定是否要輸出結束標簽,而傳統模板理論上也做不到這點,除非引入額外的html parse或tidy)
3. 換行處理,避免產生額外的空白節點
4. 對輸出的變數自動進行特殊字元的encode
當然,這些ejs或傳統模板也有能實現的,但是用起來感覺都很挫。
實際上,Jade在這方面其實做得還不夠好(我打算順著這個思路做個開源的項目),但是比那些傳統模板還是要優雅多了。
⑵ nodejs網路爬蟲怎麼過濾關鍵字
啟動terminal,運行"python /Cocos/Cocos2d-x-3.0beta2/tools/project-creator/create_project.py"。把工程命名為MaskedCal,然後選擇一個文件夾來保存,最後點Create。
接下來,請下載本工專程所需要的資源屬文件並把它們拖到你的Xcode的Resource分組中,確保「Copy items into destination group』s folder (if needed)」 並復選中,然後點Finish。
⑶ nodejs 使用express搭建框架總是報錯。
請先確認你安裝了express-generator, express框架本身不帶生成功能。
npm install express-generator -g
其次,避免文件夾完整路徑中包含中文、空格等特殊字元。最好使用管理員模式打開命令行,否則可能遇到無法寫入文件的問題。
⑷ JS截取指定字元串到指定字元串之間的內容
varstr="<123>asdadsadsa<456>";
str=str.match(/<123>(S*)<456>/)[1];
console.log(str);
S:匹配任何非空白字元。
*:匹配前面的子表達式零次或多次。
match方法:
語法:
stringObject.match(searchvalue)
stringObject.match(regexp)
searchvalue:必需。規定要檢索的字元串值。
regexp:必需。規定要匹配的模式的 RegExp 對象。如果該參數不是 RegExp 對象,則需要首先把它傳遞給 RegExp 構造函數,將其轉換為 RegExp 對象。
如果 regexp 沒有標志 g,那麼 match() 方法就只能在 stringObject 中執行一次匹配。如果沒有找到任何匹配的文本, match() 將返回 null。否則,它將返回一個數組。
例如:
"186a619b28".match(/d+/g);
如果上面的匹配不是全局匹配,那麼得到的結果如下:
["186", index: 0, input: "186a619b28"]。
(4)nodejs過濾特殊字元擴展閱讀:
常用的正則字元
1、: 將下一個字元標記為一個特殊字元、或一個原義字元、或一個 向後引用、或一個八進制轉義符。
2、^:匹配輸入字元串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 'n' 或 'r' 之後的位置。
3、$:匹配輸入字元串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 'n' 或 'r' 之前的位置。
4、+:匹配前面的子表達式一次或多次。
5、?:匹配前面的子表達式零次或一次。
6、{n}:n 是一個非負整數。匹配確定的 n 次。
7、{n,}:n 是一個非負整數。至少匹配n 次。
8、{n,m}:m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。請注意在逗號和兩個數之間不能有空格。
9、?:當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。
非貪婪模式盡可能少的匹配所搜索的字元串,而默認的貪婪模式則盡可能多的匹配所搜索的字元串。
⑸ 求大神講講web安全,nodejs怎麼防止跨域攻擊和sql注入
是CSRF(Cross-site request forgery) 不是你寫的那個!
跨域不用擔心.主流瀏覽器都會幫你做防禦的. 問題不大,主要是你自己別給其他域的許可權即可.非必要的話,以最小許可權原則.
xss主要就是過濾輸入輸出.如果業務很多,還是找人審計代碼吧.或者用比較成熟的模塊.CSRF的話,1,驗證來源 2加隨機token之類的.
sqli主要還是過濾輸入的地方.過濾/轉義關鍵字比如select,and,or等等(有專門的防注入模塊).覺得怕麻煩的話.用那些雲主機的防禦功能.再加個cdn基本就沒事了.(對於一般的反射型跨站也適用)
⑹ JS中怎麼刪除字元串中的特定的字元
var a="A,B,C,D,E,F";
var b="B,C,D";
var arrA = a.split(",");
var arrB = b.split(",");
var arrNew = new Array();
for(var i = 0; i < arrA.length; i++){
for(var j = 0; j < arrB.length; j++){
if(arrB(j) != arrA(i)) arrNew.push(arrA(i));
}
}
alert(arrNew.toString());
關於JS刪除String里的字元的方法,一般使用replace()方法。但是這個方法只會刪除一次,如果需要將string里的所以字元都刪除就要用到正則。
varstr ="abcdaabbssaaa"varreg =newRegExp("a","g");
vara = str.replace(reg,"");
console.log(a);
這里用 new RegExp()這個方法創建正則,第一個參數「a」指定了正則表達式的模式或其他正則表達式。後一個參數是一個可選的字元串,包含屬性 "g"、"i" 和 "m",分別用於指定全局匹配、區分大小寫的匹配和多行匹配。
ECMAScript 標准化之前,不支持 m 屬性。如果pattern是正則表達式,而不是字元串,則必須省略該參數。
如果列印reg的結果是:/a/g 。
還有一種比較取巧的方法,就是分割成數組,再重新拼接成新的字元串。
varstr ="abcdaabbssaaa";
vara = str.split("a").join("");
console.log(a);⑺ Nodejs 如何過濾掉特殊字元
將對象轉換成字元串,字元串里多個參數將用 『&' 分隔,將用 『=' 賦值。
這個函數的操作和 querystring.parse() 是相反的,具體可以看一下例子就了解了。
⑻ web前端需要掌握的哪些知識
一個合格的web前端需要掌握哪些技術?
最基礎的自然是JavaScript,HTML和css這三種語言。
首先了解下它們到底是什麼。
HTML是用戶看到的網頁的骨架,比如你會發現當前頁面分為左中右三個部分,其中還填充了不同的文字和圖片;每個子部分還會繼續細分,比如當前頁面的中間部分下方有輸入框等等。
CSS是網頁展示的細節控制,比如你會發現有的文字是紅底白色,有的子部分佔了頁面的二分之一寬,有的只佔六分之一,有些部分需要用戶進行某些操作(如點擊,滑動)才會出現等等,這些就是有CSS來控制。
JavaScript是負責捕捉用戶在瀏覽器上的操作,並與後端伺服器進行數據交換的腳本語言。當用戶在前端進行點擊,輸入等操作的時候,會觸動綁定了該動作的JavaScript腳本,然後JavaScript收集數據,調用後端的api介面,再將後端返回的數據交給HTML和CSS渲染出來。
一個網頁的HTML代碼和CSS代碼是可以直接在瀏覽器中查看的,你可以直接按F12,就能看到下圖右側的模塊,左右側紅框就是代碼與實際頁面的對應關系。因此如果你看到某個網站的布局很不錯,不妨點擊F12,進行學習。
前端框架
然而,實際應用中,已經很少有正規的項目組直接用上述三種語言進行web 前端開發了,而是使用很多封裝了這三種語言的框架,比如
Vue.js
,angular,react native等等。它們是來自谷歌和Facebook的大神項目組,基於自己的經驗,封裝了原生前端語言,實現了更多更復雜更酷炫的功能。因此,可以說,學會使用這些框架,能達到事半功倍的效果。
比如用了vue,它是自底向上增量開發的設計,其核心只關心圖層,而且還可以與其他庫或已存項目融合,學習門檻極其友好;另一方面,vue可以驅動單文件組件和vue生態系統支持的庫開發的復雜單頁應用。有了這個生態系統,可以說,vue是處在一個不斷壯大,不斷完善的欣欣向榮的狀態。
網路通信協議
由於前後端分離的趨勢,前端還需要了解很多網路通信協議的知識,這里不局限於http協議,因為據我的經驗,有時候我們還會用到websocket等協議。因此,前端需要簡單了解不同協議的特點以及使用方式,但是好消息是不用像學習計算機網路課程一樣對每種協議的原理都了解的特別透徹,只要學會如何用前端語言發送這種協議的請求就夠了。
⑼ node JS中處理json字元串中含有轉義符號\ ,不能解析成json對象
使用JSON從後台向前台傳輸數據的時候,當數據本身含有一些特殊字元,會導致JSON數據的解析出錯。
使用下面的方法對即將向前台輸出的json字元串進行處理,可以解決鍵盤上能輸入的所有特殊字元問題。
//當文本中含有如下特殊字元時,此方法可以成功處理,讓其在前台被正確解析,注意:此法不能處理單引號
public static String stringToJson(String s) {
StringBuffer sb = new StringBuffer ();
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
// case '\\': //如果不處理單引號,可以釋放此段代碼,若結合下面的方法處理單引號就必須注釋掉該段代碼
// sb.append("\\\\");
// break;
case '/':
sb.append("\\/");
break;
case '\b': //退格
sb.append("\\b");
break;
case '\f': //走紙換頁
sb.append("\\f");
break;
case '\n':
sb.append("\\n"); //換行
break;
case '\r': //回車
sb.append("\\r");
break;
case '\t': //橫向跳格
sb.append("\\t");
break;
default:
sb.append(c);
}}
return sb.toString();
}
//注意,下面的方法是在把你的數據文本接入json數據字元串之前使用,預先對文本做處理後在接入JSON字元串
//處理文本中的單引號 和 斜杠
public static String StringDanYinToJSON(String ors) {
ors = ors == null ? "" : ors;
StringBuffer buffer = new StringBuffer(ors);
int i = 0;
while (i < buffer.length()) {
if (buffer.charAt(i) == '\'' || buffer.charAt(i) == '\\') {
buffer.insert(i, '\\');
i += 2;
} else {
i++;
}
}
return buffer.toString();
}
⑽ nodejs安全嗎
安全是不容忽視的,每個開發者都知道它非常重要,真正嚴肅對待它的卻沒有幾人。我們 RisingStack 希望你能認真對待這一問題——這就是我們整理這份清單來幫助你的原因,你的應用在被成千上萬用戶使用前必須要做安全檢查。
這份清單大部分內容是通用的,不僅適用於Node.js,同樣適用於其他語言和框架,只是一些明確給出了在Node.js中使用的方法。同時推薦你去閱讀我們的引導文章 Node.js security,如果你剛開始使用Node.js,推薦你看這篇文章 first chapter of Node Hero。
配置管理
HTTP 安全頭部
有些關於安全的HTTP頭部是你的網站必須要有的:
Strict-Transport-Security 強制將HTTP請求替換為HTTPS請求
X-Frame-Options 防止點擊劫持
X-XSS-Protection 開啟跨站腳本攻擊(XSS)的過濾,大多數現代瀏覽器支持這個設置
X-Content-Type-Options 禁用瀏覽器對響應內容MIME類型的嗅探,嚴格使用響應的Content-Type的值
Content-Security-Policy 能有效防止多種攻擊,包括跨站腳本和跨站注入
Node.js開發者可以使用Helmet模塊置這些頭部,代碼如下:
var express = require('express');
var helmet = require('helmet');
var app = express();
app.use(helmet());
Koa和ThinkJS框架中可以使用koa-helmet來設置這些頭部,當然有關安全的頭部不止這些,更多請看Helmet和MDN HTTP Headers。
在大多數架構里這些頭部可以設置在web伺服器的配置中(Apache、Nginx),不需要對應用代碼進行改動。在Nginx中的配置:
# nginx.conf
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'";
有一個完整的Nginx配置文件,帥氣的傳送門在此。
如果你想快速檢查你的網站是否有了所有的必須頭部,請使用這個在線檢查器。
客戶端的敏感數據
當發布前端應用時,確保你的代碼里永遠不會包含API密碼和證書,因為它可以被任何人看到。
沒有自動化的方法去檢查你在代碼里寫了敏感數據,但是有兩個可以降低向客戶端暴露敏感數據風險的方法:
使用 pull requests 提交代碼
定期 code review