OLPM项目实践(3)-- 项目脚手架重要文件详解

1.components模块

在初始化项目的时候,项目已经给出了一个模块示例,就是foo。我们自己写的模块就按照foo那样的规范写就可以了。下面以foo为例子讲解一下:

1、data.js是运营人员配置文件,页面中需要运营人员配置的内容都必须写在这里,以{}对象字面量的方式来写。每一个模块都必须有这么一个文件,否则项目报错。

module.exports = {
    title: 'hello, olpm',
    content: 'this is content' 
};
//以key-value的方式编写,运营人员只需要改value的值就可以了。

 

2.foo.css是该模块的样式文件,只控制该模块的样式。模块中的样式如果跟其他模块的样式有同名,则会产生冲突。所以要注意样式名的唯一性。这个文件可有可无

.foo {
    color: red
}

 

3.foo.ejs是模板文件,dom结构都存放在这里。模板语言不一定使用ejs,可以使用tpl等。常用的是ejs和tpl模板。如果该模块需要运营人员进行数据配置,则该文件是必须有的。原因下面讲解。

<div class="foo">
    <h1><%=title%></h1>
</div>

4.foo.js是js控制文件。顾名思义,js代码都在这个文件里写。

 

5.模块内获取运营人员配置的数据。

怎样获取运营人员配置的数据?本质就是从data.js中获取数据传送到foo.js中使用。

可是在这里遇到问题,foo.js不能直接从data.js中获取数据。所以,我们可以这么做。。。

把data.js的数据渲染到foo.ejs文件中,然后foo.js读取dom节点中存在的数据。

例如:data.js是这样的

module.exports = {
    title: 'hello, olpm'
};

foo.ejs是这样子渲染data.js数据的:

<div class="foo">
    <h1><%=title%></h1>
</div>

那么foo.js是这样读取数据的:

module.exports = function(){
    var title = document.getElementsByClassName('foo')[0].getElementsByTagName('h1')[0];
    alert(title);
};

 

那么问题又来了。如果运营人员配置的是比较敏感的内容,例如:api接口。那岂不是赤裸裸滴暴露在页面dom上?

针对这个问题,可以这么恶心地解决:

从data.js把数据渲染到dom上,foo.js读取了以后马上把渲染的数据清空。所以foo.js是这样写的

module.exports = function(){
    var title = document.getElementsByClassName('foo')[0].getElementsByTagName('h1')[0];
    alert(title);
    title.innerHTML = '';//清空数据
};

 

2.views页面布局

页面布局是大概描绘了一个页面模板。请记住,这只是一个模板,所有的页面都是从这个模板中产生的。

一个页面布局就是views下的一个文件夹。

在初始化项目脚手架的时候,已经有一个index的页面布局。

1.index.css是页面的样式。与components模块的样式文件的不同之处在于,index.css是存放页面独有的样式,样式耦合度非常高。

2.index.html文件是dom结构文件。

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>hello world</title>
    <link rel="stylesheet" type="text/css" href="index.css">
    <!--[STYLES]-->
</head>
<body>
    <h1>hello world</h1>
    {{{unit name="foo"}}}
  {{{unit name=""}}}
<script type="text/javascript" src="../lib/md.js"></script> <!--[SCRIPTS]--> <script type="text/javascript" src="index.js"></script> </body> </html>
1.{{{unit name="foo"}}}  这是模块单元的引入,name是单元的名称。建议在页面中写入足够多的空单元,给页面预留单元空间。{{{unit name=""}}}

2.md.js是一个非常简化的项目工程文件。为了方便,建议使用scrat.js工程文件。减少开发的时间。

3.index.js是页面级别的js控制


3.index.js文件是页面级别的控制文件,可有可无。

4.olpm.json文件是页面描述文件,必须填写,用于运营人员进行配置时候的模板选用。其实运营人员选模板就是看name字段的。
{
    "name" : "首页",
    "description" : "首页布局描述"
}

 

3.lib全局文件
顾名思义,全局使用的文件都放在这里。包括css,js。


4.fis-conf.js
这个文件非常重要!全局的基础配置都放在这里,其中最重要而且必须有的一个配置是olpm code的配置。
fis.olpm('test');

这个olpm code在项目初始化的时候已经自动在这里配置。如果以后要改的话,可以在这里改。如果项目的olpm code与平台的项目code不一致,就会导致上传工程包失败。

如果要添加多个参数,可以这样子写:

fis.olpm({
    code : 'pojoksanti',
    domain : 'http://www.baidu',
    description : '讲解示例'
});

 

5.index.js
项目启动文件。
服务器端口,路由配置都在这里写。
'use strict';

var request = require('request'),
    express = require('express'),
    app = module.exports = express();

// static files
app.use('/s/uae/g/06/', express.static(__dirname));

// layouts
app.use(express.static('layouts'));

// proxy (optional)
// app.use(function (req, res) {
//     req.pipe(request('http://hao.uc.cn' + req.url)).pipe(res);
// });

app.listen(process.env.PORT || 8082);

 

 
posted @ 2015-07-06 21:12  Joy Ho  阅读(326)  评论(0编辑  收藏  举报