基于nodejs平臺的文件服務器:node-server
node-server
基于nodejs平臺的文件服務器,提供了基本的模板引擎以及常用的前端工具。
a nodejs based file-system-server with easy-template-engine and several F2E-utils
github: https://github.com/shy2850/node-server.git
npm: npm install f2e-node-server
why
-
出于學習的目的,學習掌握nodejs的核心API,從一個應用著手。
-
出于對前端相關的新鮮的開發模式的興趣,搭建了動態的less&coffeeScript解釋器,方便的編碼調試。
-
搜集常用的前端優化方案,主要是:javascript以及css文件的壓縮,包括簡單壓縮和智能混淆,動態的支持,實現從服務端實現資源的優化【壓縮,合并(待完成)】。
-
提供頁面拆分/包含的功能,方便統一文檔框架的維護。
-
提供基本的模板引擎,完全javascript語句實現服務端腳本功能。
模板引擎
1. 使用<%%>區分js代碼和原生文本
<% for(var i = 0; i < 4; i++) {%> <h2><% if(i%2==0){ %>Welcome <%} else{%>YOU<%} %></h2> <% } %>
轉換后的HTML文本
<h2>Welcome </h2> <h2>YOU</h2> <h2>Welcome </h2> <h2>YOU</h2>
2. 輸出變量后臺變量<% echo(str) %> 或者 <%=str%>
<div id="hd"> <% echo( new Date() ) %> <%= "hello world!"%> </div>
3. 包含和布局:
-
include : $include[包含文件路徑],該路徑使用相對項目根目錄的絕對路徑。
-
belong:$belong[布局文件路徑],路徑同上,頁面輸出將把當前內容替換 布局文件中的$[placeholder] 以后輸出。
4. 頁面支持的API&參數:
-
? 支持ECMAScript核心API, 支持nodejs-require 。
-
頁面支持 參數對象包括:
-
請求來源request(原生的 http.ClientRequest 對象),用來獲取請求參數和信息;
-
response( http.ServerResponse 對象),可以改寫服務端輸出的所有信息。
-
request自定義參數:
-
request.data: 存儲GET請求獲取的所有參數信息,沒有參數時為: {};
-
request.post: 存儲POST請求參數信息,非POST請求時為: null;
-
request.util : 預留的工具參數綁定,目前只有一個mime-module對象,request.util.mime。
-
reque ? st.$ : 通過服務端操作存儲其他信息供頁面使用,主要在顯示文件列表中有使用樣例。
工具
-
LESS 動態支持,需要使用.less后綴命名文件 (可以使用sublime或者webstorm等進行編輯,具有高亮提示) ,從URI直接訪問將獲取編譯后的css,可動態調試。
-
coffeeScript 動態支持, 需要使用.coffee后綴 (可以使用sublime或者webstorm等進行編輯,具有高亮提示) , 從URI直接訪問將獲取編譯后的javascript代碼,格式可能讓你很不爽。
-
壓縮支持: 支持css去除空白的cssmin,以及 uglify-js 對javascript以及coffeeScript編譯后的js進行壓縮。
-
支持簡單的get請求代理,如: /agent? http://news.cn
-
文件上傳(beta): /upload?uploadUrl=/uploads&target=/demo/upload.json
-
uploadUrl : 文件上傳地址(絕對路徑); 默認在服務器所在文件夾。
-
target: 數據返回頁面(絕對路徑); 默認由服務器提供的模板。