欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习杂记

程序员文章站 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。
相关标签: hapi beetl