前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript开发中的常用代码参考

JavaScript开发中的常用代码参考

作者头像
Dreamy.TZK
发布2020-09-15 10:11:29
1.1K0
发布2020-09-15 10:11:29
举报
文章被收录于专栏:小康的自留地小康的自留地

前言

此文记录项目开发中的通用代码块及编码方法的总结。

一个最简单的服务器框架(NodeJS)

代码语言:javascript
复制
// 导入模块 (yarn add express 或 npm i express 安装)
const express = require("express");
// 实例化对象
const app = express();
// 定义端口号
const port = 3000;
// 设置路由
/**
 * 当访问根路径时返回Hello World
 */
app.get("/", (req, res) => res.send("Hello World!"));
// 监听端口
app.listen(port, () =>
  console.log(`Server running at  http://127.0.0.1:${port}`)
);

当服务器创建完成后,通过node server.js进行启动服务器。

静态目录

所谓静态目录就是暴露出一个静态目录,常用于静态资源的引用。

代码语言:javascript
复制
app.use(express.static(__dirname + "/public"));

设置请求头

使用all方法表示所有请求都必须先通过此该中间件。

须放在请求路由之前,如果放在逻辑路由后,会导致无法设置成功。

代码语言:javascript
复制
app.all("*", (req, res, next) => {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Credentials", true);
    res.header(
        "Access-Control-Allow-Headers",
        "Content-Type,Content-Length,Authorization,Accept,X-Requested-With"
    );
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    next();
});

cookie-session插件的使用

使用此插件主要是为了保持会话。

代码语言:javascript
复制
// 引入cookie-session模块(yarn add cookie-session 或 npm i cookie-session 安装)
const cookieSession = require("cookie-session");
// 为cookieSession设置属性
app.use(
  cookieSession({
    // 建立cookie的名字
    name: "JDCJ",
    // 设置session 的key
    // 是个数组 每一次请求会循环去一个数值进行加密
    keys: ["123", "456", "xiaokang"],
    // 过期事件 24小时过期
    maxAge: 24 * 69 * 60 * 1000,
  })
);
app.get("/cookie", (req, res) => {
  // 设置Cookie
  req.session.id = 1;
  res.send("已建立ID");
});

清楚Cookie只需将其设置为null即可。

代码语言:javascript
复制
req.session.id = null;

模板引擎的使用

服务器逻辑

代码语言:javascript
复制
// 设置模板(视图)存放目录
app.set("views", "./views");
// 设置模板引擎
app.set("view engine", "pug");
// 渲染模板引擎
app.get("/pug", (req, res) => {
  res.render("index", { title: "Hey", message: "Hello there!" });
});

视图文件index

代码语言:javascript
复制
html
  head
    title= title
  body
    h1= message

请求参数获取(GET/POST)

GET

get请求可以直接获取参数,通过req.query即可。

代码语言:javascript
复制
app.get("/get", (req, res) => {
  console.log("query: ", req.query);
  console.log("id:", req.query.id);
  res.send(req.query);
});

POST

post请求的参数不可以直接获取,需要使用body-parser模块进行解析。

关于body-parser更多使用参考:github

代码语言:javascript
复制
// 引入解析模块
const bodyParser = require("body-parser");


// 解析urlencoded请求体
app.use(bodyParser.urlencoded({ extended: false }));

// 解析JSON请求体
app.use(bodyParser.json());



// 获取POST请求参数
app.post("/post", (req, res) => {
  console.log(req.body);
  res.send(req.body);
});

通过工具方法异步获取/读取文件内容

此场景应用于:需要读取一个文件,其内容需要被某个功能使用,可以将其在程序运行时读取,然后附加到request请求上。例如如下:

代码语言:javascript
复制
let utils = require("./utils");
app.use(async function (req, res, next) {
  // 读取用户数据
  req.userData = await utils.readFile("user.json");
  next();
});

async与await语法参考:async 函数

可以在工具库utils中写读取的逻辑,通过await函数等待工具库异步操作完成。

代码语言:javascript
复制
readFile(fileName) {
    return new Promise((resolve, reject) => {
        fs.readFile(__dirname + `/data/${fileName}`, "utf-8", (err, data) => {
            if (err) {
                reject(err);
                return;
            }
            data = JSON.parse(data);
            resolve(data);
        });
    });
},

导出一个模块

代码语言:javascript
复制
let utils = {
  name: "666",
  log: function () {
    console.log("logs");
    return "log";
  },
};
// 将对象导出即可
module.exports = utils;

在其他js文件只需要通过require引入这个文件即可.

代码语言:javascript
复制
const utils = require("./utils.js");

utils.log();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一个最简单的服务器框架(NodeJS)
  • 静态目录
  • 设置请求头
  • cookie-session插件的使用
  • 模板引擎的使用
  • 请求参数获取(GET/POST)
    • GET
      • POST
      • 通过工具方法异步获取/读取文件内容
      • 导出一个模块
      相关产品与服务
      消息队列 TDMQ
      消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档