- 1-1
 - 1-2 exports导出 不推荐
 - 2 post传值
 - 安装依赖
cnpm i koa-bodyparser -S
const koa = require(“koa”);
const app = new koa();
const router = require(“koa-router”)();
const bodyParser = require(“koa-bodyparser”);# 导入
router.post(“/post”,async ctx=>{
console.log(ctx.request.body) # 解析
ctx.body = “登录成功”
})
app.use(bodyParser()); # 使用中间件
app.use(router.routes());
app.listen(8080) 
如何在另一个js文件中使用其他js文件的变量或function,在客户端是不支持的。
1-1
导出
//a.js
var a = 10;
function show(){
    console.log(“show”)
}
module.exports = {
    a,
    show
}
导入
//b.js
const obj = require(“./a.js”);
console.log(obj)
Tips:一个文件中只能有一个module.exports
1-2 exports导出 不推荐
Tips:不支持字面量的形式
 var a = 10;
function show(){
    console.log(“show”)
}
/ exports /
console.log(module.exports == exports)
/ 不推荐 /
exports.a = a;
exports.show = show;
2 post传值
安装依赖
cnpm i koa-bodyparser -S
const koa = require(“koa”);
const app =  new koa();
const router = require(“koa-router”)();
const bodyParser = require(“koa-bodyparser”);#  导入
router.post(“/post”,async ctx=>{
    console.log(ctx.request.body) #  解析
    ctx.body = “登录成功”
})
app.use(bodyParser()); # 使用中间件
app.use(router.routes());
app.listen(8080)
3 puppeteer
3-1 找到某个元素
var ele = await page.$(“#btn”);
//input进行输入
await ele.type(“hello world”)
3-2 点击事件
3-3 解析元素的内容
var content =  await page.$eval(selector,ele=>ele.value);
3-4 自动登录 —码云为例
const puppeteer = require(‘puppeteer’);
(async () => {
  const browser = await puppeteer.launch({
      headless:false,
      defaultViewport:null
  });
  const page = await browser.newPage();
  await page.goto(‘https://gitee.com/login‘);
  var username = await page.$(“#user_login”);
  await username.type(“18986115180”)
  var pwd  = await page.$(“#user_password”)
  await pwd.type(“xxx”)
  var submit  = await page.$(“.submit”);
  await submit.click()
  await page.waitForTimeout(3000)
})();
