Giter Site home page Giter Site logo

node-marmot's Introduction

Marmot

一个解析velocity或者freemarker模板的平台。

Install

Mac/Linux

sudo npm install -g marmot

Windows

windows下您需要在管理员模式下安装

npm install -g marmot

Usage

init 子命令

进入项目目录下执行

$ marmot init

项目下如果存在.marmotrc文件,那么会根据文件中的配置进行初始化,如果不存在 .marmotrc 文件,执行后会出现问答式的初始化设置,并会生成一个.marmotrc

  1. marmot init 主要生成了项目所需要的服务器环境配置,如WEB-INF以及相关的jar包。
  2. 如果您手动删除了WEB-INF目录,您需要再次运行marmot init进行项目初始化。
  3. 由于WEB-INF目录是根据.marmotrc生成的,所以您在提交代码的时候,无需提交此目录。

init子命令参数:

  • -f, --force 强制重新初始化当前项目的WEB-INF目录

server 子命令

进入项目目录下执行

$ marmot server

您可以启动多个项目,当然需要指定不同的端口。

server子命令参数:

  • -s, --start 启动tomcat服务器,默认的端口是8080
  • -S, --stop 停止tomcat服务器
  • -r, --restart 重启tomcat服务器
  • -p, --port 8081 指定端口号,该参数只在-s, --start参数的情况下有效
  • -c, --clean 清理掉本地的tomcat服务器
  • -l, --list 显示已经添加的tomcat service列表
  • -d, --delete 8080 根据service的端口移除对应的service,你可以使用marmot server -l来查看当前已存在的service列表

Example

假设您现在有两个项目分别是project1project2

#进入到prject1目录下执行
$ marmot server -s

#进入到project2目录下执行
$ marmot server -s -p 8081

#在任意目录下执行以下命令,那么所有服务都将被关闭
$ marmot server -S

路由配置

在初始化项目时,会提示您输入路由文件入口的生成位置,默认是在当前项目目录下生成router/main.xml,如果您需要自定义文件名,请务必使用后缀为.xml的文件名。

  • 路由中的uri属性支持正则模式。

  • 关于正则模式配置请参考JAVA的正则表达式

  • 由于XML中禁止使用&<符号,所以uri中请使用&amp;&lt;实体符号代替

  • uri的匹配比较严格,通常是Ajax GET的时候我们不需要校验参数,那么可以在访问路径之后加上.*

     <!-- example -->
     <route uri="/users/friends\.json.*" target="/mock/users/ajax/friends.json"/>

路由配置示例如下:

<!--main.xml的内容-->
<?xml version="1.0" encoding="UTF-8"?>
<router>
  <router-map>
    <!-- 路由配置,uri:访问地址,target:目标文件 -->
    <route uri="/" target="/index.vm"/>
  </router-map>
  <!-- 使用import 引入其他的router file -->
  <import src="product.xml"/>
</router>

<!-- product.xml的内容 -->
<?xml version="1.0" encoding="UTF-8"?>
<router-map>
  <route url="product/index" target="/product/index.vm"/>
</router-map>

需要注意的是<import src="xx"/>中,引入其他路由文件的位置是相对于当前的main.xml文件的位置。我们建议您将所有路由统一放在同一个目录下

模拟数据

目前我们把数据模拟分为两类:

针对渲染模板的数据模拟

  • 这里的views是模板目录,mock是模拟数据目录。
  • 在路由中您只需要配置访问地址指向的模板。
  • 工具会根据模板在views中的访问路径去mock目录中查找对应的模拟数据。
  • 支持JSP/JSON两种方式模拟数据,JSP模拟数据的话通常是输出一个Map。
  • 如果mock目录下下同时存在xxx.jspxxx.json两个同名的文件,那么会优先使用xxx.jsp模拟的数据。

此思路参考自 jello

示例:

#URI访问路径
/product

#模板路径
views/product/index.vm

#模拟数据的路径
mock/product/index.json

#树形结构对应关系
proj/
	views/
		product/
			index.vm
	mock/
		product/
			index.json
<!-- 路由配置 -->
<route uri="/product" target="/product/index.vm"/>

针对Ajax接口的数据模拟

  • 与模板数据模拟不同的是,Ajax接口的路由,target直接指向json数据的访问路径。
  • 注意:target指向模板时,路径不需要加views目录,而target指向json数据时,路径需要加上mock目录
  • Ajax接口的数据模拟也支持JSP模式,和模板数据模拟不同的是,这里的JSP不是输出一个Map,而是输出一个JSON格式的字符串

示例:

#Ajax访问路径
/users/detail.json?uid=123&token=CDKS1232D92JD1

#Ajax模拟数据的路径
mock/users/ajax/user.json

#树形目录结构
proj/
	users/
		ajax/
			user.json
<!-- 路由配置 -->
<route uri="/users/detail\.json\?uid=\d+&amp;token=\w+" target="/mock/users/ajax/user.json"/>

node-marmot's People

Contributors

evan2x avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.