最新消息:

com express模块(什么是COMExpress架构)

媒体模版 admin 浏览 评论

首先我们通过NoteExpress菜单 [工具]------〉[输出样式]------〉[输出样式管理器],点“新建”按钮,进入“样式编辑器”界面。

输出样式包括以下七项:常规、匿名作品、页码、日期格式、期刊名称、引文、参考文献。

一、常规

“常规”里包含所要制作样式的基本信息:样式名称、样式基于、类别、创建日期、修改日期、注释、多语言设置(包括使用多语言格式化、语言标识管理器)。

在“样式名称”里填上“中华人民共和国国家标准 GB 7714-2005”,它是我们所要制作输出样式的名称。“样式基于”一般省略。“类别”通用为“Generic”。“创建日期”和“修改日期”系统自动填写。“注释:”里面可以填写输出样式的简略介绍,以方便用户对此输出样式的了解。“多语言”里面我们一般要进行一些简单设置:首先我们要选中“使用多语言格式化”,因为几乎所有的文献都包括中文和英文的内容,所以在“语言标识管理器”里面我们至少要设置“中文”和“英文”两种格式。在“语言标识管理器”里可以通过添加按钮进行添加“English*”和“Chinese”。

二、匿名作品

“匿名作品”是当文献出现匿名情况下的设置。有以下选项供我们选择:留空、使用完整标题替代作者(U)、使用略缩标题替代作者(S)、使用APA方式和插入文本。我们这里将其设置为“留空”即可。

三、页码

“页码”负责页码格式的设置。如“页码格式”里的:不改变页码、仅显示第一页码、缩写最后一页、缩写最后一页,两位数字、显示全部页码、期刊仅显示第一页,其他类型全部显示。根据“国标”要求页码要全部显示,因此在“显示全部页码”选项前选中,另外在“页码范围分隔字符”里要填上“-”,用于达到如:“123-125”页码的标准输出。

四、日期格式

可以根据需要选择“不替换”原样输出或者使用NoteExpress提供的日期格式。NoteExpress提供了众多日期输出格式供选择。根据“国标”的要求,我们这里选择了类似“2006-06-06”这样标准的格式。

五、期刊名称

“期刊名称”是对期刊命名格式作一下符合要求的设置。比如:显示完整期刊名、缩写、不替换、仅缩写期刊文章类型的题录、对于缩写期刊名称使用指定字体(这个选项可以对缩写期刊名称的字体作自己的设定)。根据“国标”我们使用“不替换”选项。

六、引文

"引文"用于定义参考文献在文中按照什么规则显示,比如(张三,1996),或者[1],[2],[3]...,

“引文”选项细分为:模板、作者列表、作者姓名、编号、排序方式、不明确的引文。

选中"模板"节点,如果刚才在"常规"部分启动了"多国语言模板",可以看到“模板”有“English”和“Chinese”两大模块。根据“国标”要求,引文以“[题录编号]”(类似[1],[2]...)的形式显示在文章中,因此我们通过“插入字段”功能,插入“题录编号”字段,如下图所示:

“字体”、“默认字号”均选中“默认字体”和“默认字号”。在下面的“前缀”和“后缀”选项里面我们填写“[”和“]”,“引文分隔符”中填写“,”,因为国标要求“年份格式”使用“2006”这样的格式,因此选中“使用4位年份”选项。

“作者列表”内有“作者分隔符”、“作者列表缩写(首次引用)”和“作者列表缩写(再次引用)”。根据“国标”要求,当出现多个作者时中间用“,”(逗号)分隔,最后一个作者之前用“and”分开。在“Chinese”模块里面照着“English”模块做一下相应设置。

作者姓名、编号、排序方式、不明确的引文,这些根据自己的输出要求,作一下简单的设置就行了。

七、参考文献

“参考文献”包括模板、作者列表、作者姓名、编辑列表、编辑姓名、布局、排序方式、标题大小写”。

“模板”是“参考文献”的重中之重,简单地说,制作输出样式就是制作“模板”。

模板的内容就是我们对于当前选定的题录在文章末尾如何输出的规定。首先开始设置文献模板类型.如果除"通用"之外的其它题录模板,没有一个与当前即将输出的题录类型相匹配,那么默认用"通用"模板所设定的格式,所以“通用”模板是必不可少的。比如我们设置有“期刊文章”、“书”、“学位论文”等模板,而没有“手稿”题录类型,如果当前要输出的这条题录恰好是“手稿”题录类型,软件就自动用“通用”的题录类型将其导出。设置“通用”题录类型时,首先通过“题录类型”按钮插入“通用”类型,然后通过“插入字段”按钮来逐个插入我们要输出的字段,如下图示:

现在我们再来看“通用”模板的设置。根据“国标”要求,在“通用”题录类型里除了“作者”外还有“标题”、“第二标题”、“文献类型的标识代码”、“版本”、“第二作者”、“出版地点”、“出版社”、“出版年份”、“卷”、“页码”等内容。我们将这些内容逐个地通过“插入字段”按钮插入。

在“作者”和“标题”之间根据“国标”要求要有一个“.”,因此我们要在他们之间加一个“.”,另外我们还发现他们之间还有一个空格,对于空格的处理,最好的办法是用连接符“*”以保证空格的固定输出。"国标"要求在“标题”和“第二标题”之间有一个“:”,我们加上,但是这里就要考虑一些特殊情况,如果我们简单地设置成这样“*标题:第二标题”的话,那么“标题”是一定有的,不过“第二标题”可能有时没有,如果没有的话,后面将要为空,但是“标题”后面的“:”还会出现,这样就要出错了!“:”应该和后面的“第二标题”关联,即“第二标题”没有时,“:”不输出,这时我们用分隔符“|”将他们分开,设置成“*标题|:第二标题”。接着插入字段“文献类型标识代码”,按照“国标”要求“通用”类型设置成“Z”,后面有一个“.”然后是插入“版本”和“第二作者”,我们设置成如下形式:“第二标题|[Z].*|版本*ed.*第二作者.”“版本”后面的“ed.”和“第二作者”后面的“.”,这是根据“国标”要求必须的。至于“ed”和“第二作者”前面的“*”,这是因为按照“国标”要求,“ed”和“第二作者”之间要有一个空格,这里仍用连接符“*”以保证空格的固定输出。接下来是插入“出版地点:出版社”,根据“国标”要求,它和“第二作者”之间有空格,我们仍然用连接符“*”来实现,另外还规定“出版地点”和“出版社”之间要有“:”以及“出版社”和“年份”之间是一个“,”。接下来是“年份”、“卷”和“页码”,我们要这样设置:“年份|:卷,页码|.”-----因为根据“国标”要求,“年份”“卷”之间有一个“:”以及“卷”“页码”之间有一个“,”和最后结尾要以“.”结束。

考虑这样的情况:

一:如果“卷”不存在时,那么输出时就成了类似“2006:123-125”这样的形式,显然是不对的,我们要把其中的“:”去掉,那就要用分隔符“|”将“年份”和“卷”分隔开,这样当“卷”不存在时,“:”也不将输出,以得到正确输出;

二:按照“国标”要求每个题录最后都要以“.”结束,但是如果当“页码”不存在时那么根据依赖关系,“.”将和它前面的“页码”相依赖,也就是页码存在时“.”输出,反之将不输出。这样是不符合“国标”要求的,我们要将最后面的“.”固定输出,那么这里只要用一个分隔符“|”将“页码”和“.”分隔开就可以了。

此时“English”模板里面的“通用”题录类型就做成了,在“Chinese”里面作一下相应修改就可以了,那就是“版本”后面的“ed”去掉,因为“国标”要求是不用的。

下面是一个重要的题录类型的制作,那就是“期刊文章”。首先通过“题录类型”按钮在弹出的菜单里面选中“期刊文章”,然后根据“国标”要求,“期刊文章”题录类型里要有“作者”、“标题”、“期刊”、“年份”、“卷”、“期”、“页码”。我们通过“插入字段”功能逐个插 www.hbbz08.com入,接下来做一下特殊情况的处理。在“作者”和“标题”之间有一个“.”和一个空格(仍用连接符实现),因此将其设置成“作者.*标题”的形式,“标题”后面的文章类型标识代码根据“国标”要求,“期刊文章”是“[J]”。同样的情况“标题”和“期刊”之间有“.”和空格,要用同样的处理。根据“国标”要求,“年份”“卷”“期”“页码”它们的输出形式是“年份,卷(期):页码”,这里仍要作一下特殊情况的处理:一是当“卷”不存在时,将要输出比如“2006,(2006)”这样的形式,显然中间的“,”是不需要的,需要用分隔符“|”将它们的依赖关系破坏,这样的话“,”就和后面的“卷”相依赖,“卷”不存在时“,”也将不输出,这样才符合正确的输出要求;二是“期”前面的“(”和后面的“)”要和“期”相依赖,也就是说如果“期”不存在时,前面的“(”和后面的“)”不输出,同样用分隔符“|”将“(”和“卷”和依赖关系破坏掉,将“(”和它后面的“期”相依赖;三是“期”和“页码”之间的“:”不能和它前面的“)”相依赖,仍然要设定成“:”和它后面的“页码”相依赖,同样要在“:”前加分隔符“|”;四是结尾的“.”是固定输出的,也要将“.”和它前面的“页码”用分隔符隔开,以保证“.”的固定输出。“期刊文章”的“Chinese”和它的“English”一样,做同样的工作就完成了“期刊文章”题录类型的全部设置。

接下来的“书”、“学位论文”、“会议论文集”、“报纸文章”、“计算机软件”、“书的章节”、“杂志文章”、“编著”、“报告”、“专利”、“技术标准”、“论文集”等这些题录类型的设置结果如下:

作者.*标题[EB/OL].*出版社,年份,卷|(编号)|[访问日期].*链接|.

另外的作者列表、作者姓名、编辑列表、编辑姓名、排序方式、标题大小写,根据自己的要求作一下符合自己输出要求的简单操作就行。

“国标”要求输出时,每个输出前都有“[题录序号]”,我们可以在“参考文献”的“布局”选项里做统一的设置。在“题录前缀文本”里通过右边的“插入字段”按钮插入“题录编号”,然后用“[ ]”作前后缀。在“国标”里面每个题录的结尾没有其它要求,因此不进行“题录后缀文本”的设置。

一、Express框架

前面的章节已经介绍过了,可以使用npm来安装node.js模块。具体操作请参照以前写的nodejs概论。

Express是一个nodejs的web开源框架,用于快速的搭建web项目。其主要集成了web的http服务器的创建、静态文本管理、服务器URL地址请求处理、get和post请求处理分发、session处理等功能。

使用方法,在cmd中打开你所想创建web项目的路径。然后输入

Express appname

即可创建一个名为appname的web项目。控制台打印结果

在cmd中进入appname文件夹输入

node appname.js

返回结果如下图,表示安装成功!

在项目开发中经常会出现这样的问题

此错误表示没有安装相关模块,解决办法是在cmd上打开项目文件夹,输入

npm install express

安装成功后会在本文件路径下生成一个node_modules,里面包含了Express框架代码。

其他模块也可用类似的方法进行安装,安装后的路径同样是在node_modules下。

二、jade模块

jade是一款高性能、简洁易懂的模板引擎。可通过jade来编写html文件。

jade类似一个用于快速编写html的语言,其编写后的文件后缀为.jade。

以下为文件的内容

在cmd中输入,压缩的过的可以通过加-P来不压缩,如果每次更改模版都要打命令行一次很麻烦是不是,我们可以通过加上jade-P-w jade.jade加上一个-w来开启监视模式,每次更改模版,html文件都会自动编译咯

生成后的html文件如下:

在jada文件中是可以使用for循环和if判断语句的,可以让你体会类似JSP的<%%>和php的<php></php>在网页上输出数据的快感。

三、forever模块

nodejs作为http服务器,需要确保服务顺利进行,要注意一下两点:

1.后台服务运行,监控运行日志,以及http运行日志;

2.确保项目的正常安全运行,Node.js的启动命令node,很大程度无法满足运行需求;

Node.js的forever模块在第二点就可以起到很大的作用,同时其拥有监控文件更改、自动重启等功能。

forever模块的使用方法有两种:1.在命令行中使用

forever-l forever.log-o out.log-e err.log app.js

-l forever.log-o out.log-e err.log分别指定了forever的运行日志,脚本流水日志,脚本运行错误日志,启动后将在本文件夹下产生out.log、err.log文件。

2.在编码中require forever模块使用。

四、Socket.IO模块

Socket.IO模块主要功能是将WebSocket协议应用到所有浏览器。主要用于实时的长连接多求情项目中。

例如:在线联网游戏,实时聊天、实时股票查看、二维码扫描登录等。

安装方法仍然是在cmd在中输入npm install socket.io

如何使用Socket.IO来创建一个项目。

需要分别实现服务端和客户端的逻辑:

先创建一个服务端的node.js脚本index_server.js

var app= require('http').createServer(handler)//创建服务器app

, io= require('socket.io').listen(app)//引用socket.io模块监听app

, fs= require('fs')//引用文件处理模块

app.listen(80);//指定app监听的端口,第二个参数127.0.0.1可省略

function handler(req, res){

fs.readFile(__dirname+'/index.html', function(err, data){ if(err){

res.writeHead(500); return res.end('Error loading index.html');

}

res.writeHead(200);

res.end(data);

});

}

io.sockets.on('connection', function(socket){

socket.emit('news',{ hello:'world'});

socket.on('my other event', function(data){

console.log(data);

});

});

其中,socket.emit()为Socket发送消息的函数,第一个参数表示发送消息的key值,第二个参数为发送消息的内容,也就是发送的数据。

Socket。on()为Socket接收消息的函数,第一个参数为接收消息的可以值,第二个参数为回调函数,其中回调函数携带的参数为接收消息所发送的数据。

接下来web前端如何使用JavaScrit来连接Socket服务器。

新建一个index_client.html

<script type="text/javascript" src="socket.js"></script>

<script type="text/javascript"> var socket= io.connect(';);//创建本地sock连接

socket.on('news',function(data){//Socket接收news消息时执行回调函数 console.log(data);

socket.emit('my other event',{my:'data'});

});</script>

<script type="text/javascript" src="socket.js"></script>加载已经安装好的Socket.io的本地JavaScrit文件。

var socket= io.connect(';);因为端口为80,所有这里可以不端口号

socket.on('news',function(data){}//客户端接收news消息成功后,发送my other event消息到服务端,发送的消息内容为json对象{my:'data'}

接下来只需要运行服务端的index_server.js文件来启动socket服务

效果:在浏览器输入按F12调出浏览器的控制台console即可看见打印出了一个object对象。

执行完毕后可能会报错:catnot find module socket.io,说明你的socket.IO没有安装,或已经安装并配置为全局,但你的安装路径并没有配置到在path中,所有无法引用。

你可以选择配置path,或者安装到项目内。这里建议安装到你的项目目录下,而不是简单粗暴的配置为全局。先卸载npm uninstall socket.io进入指定目录后安装node index_server.js

socket.io详细请参阅

五、request模块

request模块为开发者提供了一种简单访问HTTP请求的方法。request还支持HTTPS的访问方法。

安装:

npm install requset

request模块基本上覆盖了所有的HTTP请求方式如GET,POST,HEAD,DEL等。但其最基本的两个方法是request.get()和request.post().

get和post的区别

get:

1.使用get向服务器发出和接收的请求会附在url之后。类似:?id=1221&name=5555这个url中传递了两个参数,一个为id,一个为name。

2.get请求不能超过1024个字节。

post没有限制,也不会附在url上。

接下来做一个简单的实例

get实例:

首先新建一个服务器app_get.js

var http= require("http");

http.createServer(function(req,res){

res.writeHead(200,{'content-Type':'text/plain'});

res.end('Hello world\n'+req.method);

}).listen(1337,"127.0.0.1");

再建一个发送求情的request_get.js文件

var request=require('request');

request.get("",function(error,response,result){

console.log(result);

});

在CMD中运行app_get.js,运行成功后,再打开一个cmd(之前的cmd不要关闭),执行request_get.js文件。

执行后的结果如下

hello world

GET

可以看出,通过request.get方法访问

返回的结果就是res.end()的参数

post实例:

和上面一样,先新建服务器app_post.js

var http= require("http"),

querystring=require('querystring');

http.createServer(function(req,res){ var postData="";//开始异步接收客户端post的数据

req.addListener("data",function(postDataChunk){

postData+= postDataChunk;

});//异步post数据接收完毕后执行匿名回调函数

req.addListener("end",function(){ var postStr=JSON.stringify(querystring.parse(postData));

res.writeHead(200,{'content-Type':'text/plain'});

res.end(postStr+'\n'+req.method);

});

}).listen(1400,"127.0.0.1");

然后再新建一个request_post.js

var request=require("request");

request.post(';,{form:{'name':'ermu','book':'node.js'}},function(error,response,result){

console.log(result);

})

像上面一样在cmd中执行后显示的结果如下:

D:\nodejs\src\request>node request_post.js

{"name":"ermu","book":"node.js"}

POST

request post提交了一个json对象{"name":"ermu","book":"node.js"}而服务器接通过获取该POST数据,然后返回客户端,同时将http请求方式也响应到客户端。

request post参数可以有两种传递方式。

其中,第一种是将url和form表单的数据作为json参数在request post传递。举例如下:

request.post('url':':{'name':'ermu','book':'node.js'}},function(error,response,result){

console.log(result);

})

另一种是将url和form作为两个参数,上面的实例就是使用这种方法。

六、 Formidable模块

该模块的目的是为了解决文件上传。

在原生的node.js模块中,提供了获取post数据的方法,但是并没有直接获取上传文件。

COM Express为PICMG协会发表的新规格,是Computer-On-Module Express的简称,属于System-On-Module的规格之一。COM Express规范分为模块和载板两部份,模块包含处理器、内存与芯片组,其余则是载板上的设计规范。以现有的模块可配合不同的载板,以符合包括游戏、娱乐、安全、监控、医疗、测量和测试等不同领域的应用需求。

转载请注明:片头模版 » com express模块(什么是COMExpress架构)

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)

网友最新评论 ()