koa

deno+mongo实战踩坑记

流过昼夜 提交于 2020-08-17 12:51:49
自从 deno 1.0 发布以来,有关 deno 的文章很多,大多数都是在讨论怎么安装 deno 、deno 有哪些特点 、deno 和 node 有哪些异同、deno是不是 node 的替代品等。咱们今天不讨论这些,毕竟 Talk is cheap. Show me the code! 亲自体验一把 deno 开发带来的快感、用 deno 搞一个“企业级”应用: deno-supermarket ,难道不香吗? deno 常见的一些坑 在实战之前,还是先来介绍几个我在刚接触 deno 时遇到的小坑。 权限标志符位置的问题 我们都知道, deno 默认是安全的,就是导致了默认情况下是不允许访问网络、读写文件等。比如有个名为 index.ts 的文件内容如下: import { serve } from "https://deno.land/std@0.50.0/http/server.ts" ; const s = serve({ port: 8000 }); console.log( "http://localhost:8000/" ); for await (const req of s) { req.respond({ body: "Hello World\n" }); } 复制代码 如果直接执行 deno run index.ts , 会报错: error:

基于Apify+node+react/vue搭建一个有点意思的爬虫平台

ε祈祈猫儿з 提交于 2020-08-16 19:35:55
前言 熟悉我的朋友可能会知道,我一向是不写热点的。为什么不写呢?是因为我不关注热点吗?其实也不是。有些事件我还是很关注的,也确实有不少想法和观点。 但我一直奉行一个原则,就是: 要做有生命力的内容 。 本文介绍的内容来自于笔者之前负责研发的 爬虫管理平台 , 专门抽象出了一个相对独立的功能模块为大家讲解如何使用 nodejs 开发专属于自己的爬虫平台.文章涵盖的知识点比较多,包含 nodejs , 爬虫框架 , 父子进程及其通信 , react 和 umi 等知识, 笔者会以尽可能简单的语言向大家一一介绍. 你将收获 Apify 框架介绍和基本使用 如何创建 父子进程 以及 父子进程通信 使用 javascript 手动实现控制爬虫最大并发数 截取整个网页图片的实现方案 nodejs 第三方库和模块的使用 使用 umi3 + antd4.0 搭建爬虫前台界面 平台预览 上图所示的就是我们要实现的爬虫平台, 我们可以输入指定网址来抓取该网站下的数据,并生成整个网页的快照.在抓取完之后我们可以下载数据和图片.网页右边是用户抓取的记录,方便二次利用或者备份. 正文 在开始文章之前,我们有必要了解爬虫的一些应用. 我们一般了解的爬虫, 多用来爬取网页数据, 捕获请求信息, 网页截图等,如下图: 当然爬虫的应用远远不止如此,我们还可以利用爬虫库做 自动化测试 , 服务端渲染 ,

用云函数这一利器改写了ai抠图

北城以北 提交于 2020-08-16 06:25:25
抠图效果 引言 上次写了一篇用小程序实现ai抠图,就差一步可以能在小程序全盘使用第三方库去抠图,苦于不能将Buffer图片源转成base64赋给 <image> ,上了node.js后端去实现,这两天突然想起可以用云函数去实现,果断用云函数代替自己写后端。 纯微信小程序端实现ai抠图代码如下: wx.chooseImage({ count: 1, // 默认9 sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: res => { var tempFilePaths = res.tempFilePaths const file = tempFilePaths[0] this.setData({ origin: file }) console.log(file) wx.uploadFile({ header: { 'X-Api-Key': 'your key' }, url: ' https://api.remove.bg/v1.0/removebg', filePath: file, name: 'image_file', success: res => { const data = res.data

Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端

跟風遠走 提交于 2020-08-14 11:06:11
要搞一个小型的cms内容发布系统 因为小程序上线之后,直接对数据库进行操作的话,慧出问题的,所以一般都会做一个管理系统,让工作人员通过这个管理系统来对这个数据库进行增删改查 微信小程序其实给我们提供了这样的能力了 (也就是可以在自己已有的服务器来进行云操作,所以就可以通过这个CMS内容管理系统来对云数据库进行修改) 我们就要建立自己的web服务器--》搭建一个简易的服务器 https://koa.bootcss.com/ 这个是要node版本是7以上,可以在node官网去搭建,我这边之前按照过了,直接cmd打开,通过 node -v查看版本 然后还要下载一个 cnpm,这个主要是下载第三方模块用的 https://www.cnblogs.com/biglovevolcaner/p/6707746.html 打开cmd,直接输入这位大佬博客里面的语句进行安装即可了 这些都准备好了之后,就可以开始koa2的服务器搭建了 我们选择koa的脚手架 koa-generator https://blog.csdn.net/sinat_39049092/article/details/104575018 (跟这个博客到第三步就行) 然后我们就可以到想要搭建系统的文件中(我在d盘新建了一个weapp文件) 在cmd中输入 D:\weapp 之后输入 d:即可跳转 输入 koa2 miaomiao

koa脚手架

折月煮酒 提交于 2020-08-14 08:35:13
Koa脚手架 koa-generator是用于生成koa项目骨架的生成器 koa-generator提供的功能如下: 生成项目骨架,集成必要的中间件 约定目录结构 项目骨架结构描述 app.js为入口 bin/www为启动入口 支持静态服务器,即public目录 支持routes路由目录 支持views视图目录 默认将Pug作为模板引擎 安装Koa生成器 koa-generator支持Koa v1和Koa v2,安装后分别使用koa和koa2命令创建koa项目模板 创建Hello world koa2 helloworld 安装依赖模块 npm install 启动命令 npm start 目录解析 xxx@xxx:/mnt/c/codes/temp/hello/hello$ tree . -L 2 . ├── app.js ├── bin │ └── www ├── package.json ├── public │ ├── images │ ├── javascripts │ └── stylesheets ├── routes │ ├── index.js │ └── users.js └── views ├── error.pug ├── index.pug └── layout.pug app.js 为入口 bin/www为启动入口 支持静态服务器,即public目录

Serverless 应用实践及典型案例解析

天大地大妈咪最大 提交于 2020-08-14 05:26:11
本文整理自 ServerlessDay · China 大会 - 《Serverless 应用实践及典型案例解析》的分享,讲师为腾讯云 Serverless 高级架构师卢萌凯、猎豹移动前端总监董文枭、江娱互动技术经理董文强、新东方高级工程师李垦。 本文主要分为四部分: Serverless 的优势和价值 基于 Serverless 构建 REST API Serverless 和服务端渲染的结合 Serverless 构建音视频转码方案 Serverless 的优势和价值 为什么我们投入这么大时间和精力来做 Serverless 呢?因为我们坚信云计算的未来趋势之一就是 Serverless。因为 Serverless 让云服务的应用变得更加简单、高效。比如用云主机部署应用的时候,不仅要搭建和维护环境,同时也要评估业务的资源用量,尤其是对于运营类的活动,如果一旦评估的不准确,要么会造成资源的巨大浪费,要么服务可能会被打爆,甚至停服下线。 而 Serverles 能够做到按需使用,让业务完美的弹性伸缩,对于运维同学来讲,简直不能更爽。而且和预付费的实例不同,Serverless 是 pay as you go的模式,只有当业务运行时才会占用资源,只有源被占用了才会计费,简单来讲,就是,我实际用多少就付多少钱。这种计费模式对于存在明显波峰波谷的服务,优势相当明显。 另外,云计算的发展

点亮你的Vue技术栈,万字Nuxt.js实践笔记来了

爷,独闯天下 提交于 2020-08-13 09:35:40
前言 作为一位 Vuer(vue开发者),如果还不会这个框架,那么你的 Vue 技术栈还没被点亮。 Nuxt.js 是什么 Nuxt.js 官方介绍: Nuxt.js 是一个基于 Vue.js 的通用应用框架。 通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI渲染。 我们的目标是创建一个灵活的应用框架,你可以基于它初始化新项目的基础结构代码,或者在已有 Node.js 项目中使用 Nuxt.js。 Nuxt.js 预设了利用 Vue.js 开发服务端渲染的应用所需要的各种配置。 如果你熟悉 Vue.js 的使用,那你很快就可以上手 Nuxt.js 。开发体验也和 Vue.js 没太大区别,相当于为 Vue.js 扩展了一些配置。当然你对 Node.js 有基础,那就再好不过了。 Nuxt.js 解决什么问题 现在 Vue.js 大多数用于单页面应用,随着技术的发展,单页面应用已不足以满足需求。并且一些缺点也成为单页面应用的通病,单页面应用在访问时会将所有的文件进行加载,首屏访问需要等待一段时间,也就是常说的白屏,另外一点是总所周知的 SEO 优化问题。 Nuxt.js 的出现正好来解决这些问题,如果你的网站是偏向社区需要搜索引擎提供流量的项目,那就再合适不过了。 我的第一个 Nuxt.js 项目 我在空闲的时间也用 Nuxt.js 仿掘金 web

egg中间件

五迷三道 提交于 2020-08-13 02:18:35
中间件 :匹配路由前、匹配路由完成做的一系列的操作。 Egg 是基于 Koa 实现的,所以 Egg 的中间件形式和 Koa 的中间件形式是一样的,都是基于洋葱圈模型 Koa中的中间件: http://eggjs.org/zh-cn/intro/egg-and-koa.html#midlleware Egg中的中间件: http://eggjs.org/zh-cn/basics/middleware.html 一般来说中间件也会有自己的配置。在框架中,一个完整的中间件是包含了配置处理的。我们约定一个中间件是一个放置在 app/middleware 目录下的单独文件,它需要 exports 一个普通的 function,接受两个参数: options: 中间件的配置项,框架会将 app.config[${middlewareName}] 传递进来。 app: 当前应用 Application 的实例。 demo: app/middleware文件下 创建中间件forbidip.js和printdate.js中间件: module.exports = (options, app) => { // 返回一个异步的方法 return async function forbidIp(ctx,next){ // 要屏蔽的id : 1.从数据库获取 2、从参数传入 var forbidips=

🚀点亮你的Vue技术栈,万字Nuxt.js实践笔记来了

有些话、适合烂在心里 提交于 2020-08-12 20:53:48
前言 作为一位 Vuer(vue开发者),如果还不会这个框架,那么你的 Vue 技术栈还没被点亮。 Nuxt.js 是什么 Nuxt.js 官方介绍: Nuxt.js 是一个基于 Vue.js 的通用应用框架。 通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI渲染。 我们的目标是创建一个灵活的应用框架,你可以基于它初始化新项目的基础结构代码,或者在已有 Node.js 项目中使用 Nuxt.js。 Nuxt.js 预设了利用 Vue.js 开发服务端渲染的应用所需要的各种配置。 如果你熟悉 Vue.js 的使用,那你很快就可以上手 Nuxt.js 。开发体验也和 Vue.js 没太大区别,相当于为 Vue.js 扩展了一些配置。当然你对 Node.js 有基础,那就再好不过了。 Nuxt.js 解决什么问题 现在 Vue.js 大多数用于单页面应用,随着技术的发展,单页面应用已不足以满足需求。并且一些缺点也成为单页面应用的通病,单页面应用在访问时会将所有的文件进行加载,首屏访问需要等待一段时间,也就是常说的白屏,另外一点是总所周知的 SEO 优化问题。 Nuxt.js 的出现正好来解决这些问题,如果你的网站是偏向社区需要搜索引擎提供流量的项目,那就再合适不过了。 我的第一个 Nuxt.js 项目 我在空闲的时间也用 Nuxt.js 仿掘金 web

项目总结,彻底掌握NodeJS中如何使用Sequelize

旧时模样 提交于 2020-08-12 15:50:04
前言 sequelize是什么? sequelize是基于NodeJs的ORM框架,它适用于不同的数据库,如:Postgres、MySQL、SQLite、MariaDB,我们可以通过sequelize对数据库进行一系列的操作。通常我用它与MySQL一起使用。该文是我在使用sequelize做完项目后对sequelize的系统整理。 准备工作 一、创建数据库和表,方便学习过程中书写示例代码 创建数据库 lesson CREATE DATABASE IF NOT EXISTS lesson DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 创建商品表 goods(示例使用,字段从简) CREATE TABLE IF NOT EXISTS goods( id INT(20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '商品id', name VARCHAR(64) NOT NULL COMMENT '商品名称', title VARCHAR(200) NOT NULL COMMENT '商品标题', descript TEXT COMMENT '商品描述', num BIGINT UNSIGNED NOT NULL COMMENT '商品库存', cateid INT(10)