PureJS (6.5):配置文件
程序员文章站
2022-03-02 11:10:18
...
PureJS (6.5):配置文件
配置文件的目的是把经常变化的部分提取出来,以便修改。相比 XML,直接用 js 进行配置会更为直截了当一些。
在现在的 PureJS 工程中有三类配置文件:
首先是 lib 和 server 的配置,在程序启动时生效,不支持热部署。
其次是特定应用的配置,修改后生效,支持热部署。
最后是用于测试的配置,与 lib 的配置相似,但设置的参数不同。
当然,现在 PureJS 的功能还比较基础,因此需要配置的地方还不多。
接下来,我们就逐一看看这些配置文件吧。
lib 和 server 的配置文件
lib 中需要配置的有 pure.db 使用的数据库名称 和 pure.render 使用的页面文件目录(路径前缀)。
server 需要配置端口、网站根目录、web 资源文件目录等。
以下是 lib 和 server 的配置文件:
scripts/config.js
config = { // 指定数据库名称 db : { name : 'app' }, // 指定页面文件目录(路径前缀) render : { prefix : 'webapp/' }, // server 的配置 server : { // 使用的端口号 port : 8080, // 网站根目录,即网站 URL 中接在域名之后的部分 contextPath: "/", // web 资源文件目录,客户端可见的 html、css、js 等都放在这个目录下 resourceBase: "webapp", // 上传文件的最大限制 maxUploadSize : 10 * 1024 * 1024, // log4j 日志系统的配置文件的位置 logConfigPath: "log4j.properties", // 服务器端执行的脚本的位置,这些脚本支持热部署 scriptsDirs : ["scripts/lib", "webapp/js/both", "scripts/app"], // servlet 的位置 (apiServlet 和 pageServlet) servletsDirs: ["scripts/servlets"], // apiServlet 的访问路径映射 apiServletPath: "/api", // pageServlet 的访问路径映射 pageServletPath: "/", // defaultServlet(静态文件)的访问路径映射 defaultServletPath : "*.js,*.css,*.ico,*.txt,*.png,*.jpg,*.gif,*.htm,*.html,*.swf" } }
在 pure.db 的实现中,获取数据库实例时使用了 config.db.name:
scripts/lib/pure/db.js
function params() { db = imp.Mongo().getDB(config.db.name); // 其他代码,略。 } function get(name) { return proxy(db.getCollection(name)); }
在 pure.render 的实现中,获取文件名时使用了 pure.render.prefix:
scripts/lib/pure/render.js
function extend() { // 其他代码,略。 var r = config.render; pure.render.prefix = r && r.prefix || ""; } function render(partial, file, func) { // 其他代码,略。 file = pure.render.prefix + file + ".html"; // 其他代码,略。 }
特定应用的配置文件
应用本身也需要配置文件,并且这些文件通常放在 app 目录或其子目录下,以支持热部署。
这里以 admin 的用户名和密码为例:
scripts/app/config.js
app.config = { admin : { name: "admin", password: "admin123" } };
在 api.auth 的实现中就可以使用 app.config.admin 了:
scripts/app/api/auth.js
api.auth = { login : function(params, req) { var admin = app.config.admin; if (params.name !== admin.name || params.password !== admin.password) { return false; } req.session.setAttribute("user.role", "admin"); return true; } }
用于测试的配置文件
测试时使用的数据库和页面文件的位置可能与生产不同,因此需要另外的配置文件,以下是两个例子:
scripts/test/app/config.js
config = { db: { name: 'test' }, render: { prefix: 'webapp/' } };
scripts/test/lib/config.js
config = { db: { name: 'test' }, render: { prefix: 'scripts/test/lib/render/' } };