基于nodejs平台的文件服务器:node-server

jopen 10年前

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

  1. 出于学习的目的,学习掌握nodejs的核心API,从一个应用着手。

  2. 出于对前端相关的新鲜的开发模式的兴趣,搭建了动态的less&coffeeScript解释器,方便的编码调试。

  3. 搜集常用的前端优化方案,主要是:javascript以及css文件的压缩,包括简单压缩和智能混淆,动态的支持,实现从服务端实现资源的优化【压缩,合并(待完成)】。

  4. 提供页面拆分/包含的功能,方便统一文档框架的维护。

  5. 提供基本的模板引擎,完全javascript语句实现服务端脚本功能。

模板引擎

1. 使用<%%>区分js代码和原生文本

  1.                     <% for(var i = 0; i < 4; i++) {%>                          <h2><% if(i%2==0){ %>Welcome <%} else{%>YOU<%} %></h2>                      <% } %>                  

    转换后的HTML文本

  2.                     <h2>Welcome </h2>     <h2>YOU</h2>                          <h2>Welcome </h2>     <h2>YOU</h2>                  

      

2. 输出变量后台变量<% echo(str) %> 或者 <%=str%>  

  1.         <div id="hd">     <% echo( new Date() ) %> <%= "hello world!"%>          </div>      

3. 包含和布局: 

  • include : $include[包含文件路径],该路径使用相对项目根目录的绝对路径。

  • belong:$belong[布局文件路径],路径同上,页面输出将把当前内容替换 布局文件中的$[placeholder] 以后输出。

4. 页面支持的API&参数:

    • ‍ 支持ECMAScript核心API, 支持nodejs-require 。

    • 页面支持 参数对象包括:

      1. 请求来源request(原生的 http.ClientRequest 对象),用来获取请求参数和信息;

      2. response( http.ServerResponse 对象),可以改写服务端输出的所有信息。

      3. request自定义参数:

        1. request.data: 存储GET请求获取的所有参数信息,没有参数时为: {};

        2. request.post: 存储POST请求参数信息,非POST请求时为: null;

        3. request.util : 预留的工具参数绑定,目前只有一个mime-module对象,request.util.mime。

        4. reque ‍ st.$ : 通过服务端操作存储其他信息供页面使用,主要在显示文件列表中有使用样例。

工具

  1. LESS 动态支持,需要使用.less后缀命名文件 (可以使用sublime或者webstorm等进行编辑,具有高亮提示) ,从URI直接访问将获取编译后的css,可动态调试。

    神马是LESS

  2. coffeeScript 动态支持, 需要使用.coffee后缀  (可以使用sublime或者webstorm等进行编辑,具有高亮提示) , 从URI直接访问将获取编译后的javascript代码,格式可能让你很不爽。

    CoffeeScript又是神马

  3. 压缩支持: 支持css去除空白的cssmin,以及 uglify-js 对javascript以及coffeeScript编译后的js进行压缩。

  4. 支持简单的get请求代理,如: /agent? http://news.cn  

  5. 文件上传(beta):  /upload?uploadUrl=/uploads&target=/demo/upload.json 

    • uploadUrl : 文件上传地址(绝对路径);  默认在服务器所在文件夹。

    • target: 数据返回页面(绝对路径); 默认由服务器提供的模板。

项目主页:http://www.open-open.com/lib/view/home/1405607393359