学习杂记
程序员文章站
2022-07-06 21:54:10
...
hapi学习:看了官方的文档(https://hapijs.com/tutorials),做了一个小例子,其他的没有。
工程结构:
各个文件内容:
package.json
{
"name": "myproject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"hapi": "^17.5.0",
"hapi-pino": "^4.0.4",
"inert": "^5.1.0"
}
}
settings.js
var serverOptions = {
port:3000,
host:'localhost'
};
module.exports = serverOptions;
server.js
'use strict';
const Hapi = require('hapi');
const api = require('./api');
const serverOptions = require('./settings');
const server = Hapi.server(serverOptions);
/**
* 绑定路由——接口
* @returns {Promise<void>}
*/
server.route({
method:'GET',
path:'/',
handler:api.get_1
});
server.route({
method:'GET',
path:'/{name}',
handler:api.get_2
});
/**
* 服务启动
* @returns {Promise<void>}
*/
const init = async () => {
//引入inert处理静态资源
await server.register(require('inert'));
let pino_option = {
plugin:require('hapi-pino'),
options:{
prettyPrint:false,
logEvents:['response']
}
};
//引入hapi-pino记录日志
await server.register(pino_option);
server.route({
method:'GET',
path:'/hello',
handler:api.hello
});
await server.start();
console.log(`Server running at: ${server.info.uri}`);
};
process.on('unhandleRejection',(err) => {
console.log(err);
process.exit(1);
});
init();
api.js
var api = Object.create({});
api.get_1 = function(request,h)
{
return 'Hello,world!';
};
api.get_2 = function(request,h)
{
request.logger.info('In handler %s',request.path);
return 'Hello,'+ encodeURIComponent(request.params.name) + '!';
};
api.hello = (request,h) => {
return h.file('./public/hello.html');
};
module.exports=api;
hello.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hapi.js is awesome!</title>
</head>
<body>
<h1>Hello World.</h1>
</body>
</html>
beetl 学习:语法与javascript非常类似,仅仅在模板加载,一些全局变量的绑定、安全输出、自定义标签等等方面有些特殊,暂时记录。
其他内容:
前端发展历史:
1989年,欧洲盒子研究中心物理学家Tim Berners-Lee发明超文本标记语言HTML;
CGI(Common Gateway Interface)
ASP,JSP,PHP HTML页面中需要替换的变量使用特殊标记<%=var%>,然后配合循环、条件判断,创建动态HTML。
JavaScript:
第一阶段:直接使用JavaScript操作DOM节点
第二阶段:jQuery
第三阶段:MVC模式
MVVM模型:在前端页面中,把Model用纯JavaScript对象表示,View负责显示;把View和Model关联起来的就是ViewModel;ViewModel负责把Model的数据同步到View显式出来,还负责把View的修改同步回Model。
Model —— javascript对象
View —— HTML
MVVM的设计思想就是:关注Model的变化,让MVVM框架去自动更新DOM的状态,从而让开发这不再关注操作DOM,而是数据变化。
模板引擎:为了使用户界面与业务数据分离,使用模板引擎生成HTML。