koa

搭建node服务(二):操作MySQL

醉酒当歌 提交于 2020-08-12 10:00:59
搭建node服务(二):操作MySQL 为了进行复杂信息的存储和查询,服务端系统往往需要数据库操作。数据库分为关系型数据库和非关系型数据库,关系型数据库有MySQL、Oracle、SQL Server等,非关系型数据库有Redis(常用来做缓存)、MongoDB等。MySQL是目前很流行的数据库,本文将要介绍如何在node服务中进行MySQL数据库操作。 一、 安装依赖 npm install mysql --save 或者 yarn add mysql 二、建立连接 要想进行数据库操作就需要和数据库建立连接,然后通过连接进行数据库的操作。MySQL的数据库连接方式有以下几种: mysql.createConnection() 每次请求建立一个连接 mysql.createPool() 创建连接池,从连接池中获取连接 mysql.createPoolCluster() 创建连接池集群,连接池集群可以提供多个主机连接 mysqljs文档中推荐使用第一种方式:每次请求建立一个连接,但是由于频繁的建立、关闭数据库连接,会极大的降低系统的性能,所以我选择了使用连接池的方式,如果对性能有更高的要求,安装了MySQL 集群,可以选择使用连接池集群。 1. 数据库配置 将数据库相关的配置添加到公用的配置文件中,方便项目的初始化。 config.js module.exports = { … //

实现微前端需要了解的 Vue Genesis 渲染器

依然范特西╮ 提交于 2020-08-12 06:11:12
我们的需求 在 中,核心的就是渲染器,它提供了最基础渲染能力,有了它,你可以实现微前端、微服务、远程组件、首屏渲染,甚至可以和 React、EJS 等配合使用。 它可以和怎样的你协作? 如果你是传统的后端渲染的,需要做SEO,但是你希望在部分布局,部分页面引入 Vue,那么 renderer.renderJson() 足以,将渲染结果传递给后端渲染的模板引擎中即可。 如果你是中后台系统,业务系统全部集中在一个项目,你希望可以按照业务进行服务的拆分,那么 `` 足以 如果你是 CSR 渲染的项目,那么 renderer.renderHtml({ mode: 'csr-html' }) 足以 如果你是 SSR 渲染的项目,那么 renderer.renderHtml({ mode: 'ssr-html' }) 足以 如果你想做微前端、微服务、那么 渲染器 天生就具备了这样的能力,你可以把它当成一个工具函数使用,你可以通过 HTTP 、 RPC 等等各种协议访问到你的服务,然后使用它进行渲染 创建一个渲染器 开发环境 import { SSR } from '@fmfe/genesis-core' ; import { Watch } from '@fmfe/genesis-compiler' ; ​ const start = async () => { const ssr = new

了不起的 Deno 入门与实战

馋奶兔 提交于 2020-08-12 03:01:11
了不起的 Deno 入门篇 一、Deno 简介 Deno 是一个 JavaScript/TypeScript 的运行时,默认使用安全环境执行代码,有着卓越的开发体验。Deno 含有以下功能亮点: 默认安全。外部代码没有文件系统、网络、环境的访问权限,除非显式开启。 支持开箱即用的 TypeScript 的环境。 只分发一个独立的可执行文件(deno)。 有着内建的工具箱,比如一个依赖信息查看器(deno info)和一个代码格式化工具(deno fmt)。 有一组经过审计的 标准模块,保证能在 Deno 上工作。 脚本代码能被打包为一个单独的 JavaScript 文件。 Deno 是一个跨平台的运行时,即基于 Google V8 引擎的运行时环境,该运行时环境是使用 Rust 语言开发的,并使用 Tokio 库来构建事件循环系统。Deno 建立在 V8、Rust 和 Tokio 的基础上,它的架构如下: (图片来源: deno.land/manual/cont… 1.1 Rust Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为 “安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的编程风格。Deno 使用 Rust 语言来封装 V8 引擎,通过 libdeno 绑定,我们就可以在 JavaScript 中调用隔离的功能。 1.2 Tokio

四面腾讯与华为,大厂前端面试真BT!

ε祈祈猫儿з 提交于 2020-08-12 01:45:31
今年算是经历颇多的一年了,腾讯和华为都走了几趟(一共面试了四个部门),拿了两个offer。(开心.png),但还是挂了两次,有点遗憾。 面试题总结 面试完之后,赶紧总结了一波,前端这个岗位,这两家大厂的面试思路和面试问题其实都差不多: 1. JS底层: 说一说js的原型与继承。 分析一下优秀的前端框架源码,这么写的优缺点在哪。 this指向问题,this的深拷贝如何实现,这个也是高频率被问到的问题。 js事件流是怎么样体现的。 柯里化函数。 2. 数据层: 写过中间件么? 了解koa么? 数据安全是怎么处理的。 axios 与 fetch的实现。 3. HTTP相关: 跨域问题的产生与解决。 http1.1时如何复用tcp连接。 http2.0新的变化。 http报文的请求分成几个部分? 前端与后台交互的时候会产生几次握手,分别做了什么? 4. 框架: 说一说vue的源码的响应式与数据驱动,主要是问原理。 Vue与react的区别在哪,这个也是问底层实现。 虚拟dom、diff算法等等,基本没问到过怎么去使用。 像组件传值啥的没提过。还有就是路由的管理 有没有封装过组件库, dev-server是怎么跑起来的。 5. 服务端与工具 主要是Node的问题,有没有拿node做过中间层。 Node的线程处理、事件循环。 这个主要就是 webpack 与 babel 的配置

Node.js 蚕食计划(六)—— MongoDB + Koa 入门

℡╲_俬逩灬. 提交于 2020-08-12 00:39:57
一、安装 MongoDB 1. 在 Windows 环境下安装: // Windows 7 / Server 2008 R2 以上的版本 打开官网链接 https://www.mongodb.com/try/download/community 在页面中依次选择 On-Premises => MongoDB Communtiy Server ,然后选择 Platform 为 Windows,最后下载并执行安装包 1. 在 MacOS 安装: 也可以按照上面的方法下载安装包,或者选择 Download 按钮旁的 Copy Link ,通过 curl 命令安装 不过还有另一种不需要打开 MongoDB 官网的办法: 直接使用 brew 安装 ( 参考链接 ) 首先 tab 仓库 brew tap mongodb/brew 然后安装社区版本 brew install mongodb-community 安装的时候会自动创建配置文件: 配置文件: /usr/local/etc/mongod.conf 日志目录: /usr/local/var/log/mongodb 数据目录: /usr/local/var/mongodb 可以用 mongod --version 命令来检查是否安装成功 如果能正常显示当前版本,就说明安装成功,可以直接进入下一节 如果提示 "command not

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

孤街浪徒 提交于 2020-08-11 20:43:37
前言 作为一位 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 + js 大文件分片上传

自古美人都是妖i 提交于 2020-08-11 19:19:34
简单的文件上传 一、准备文件上传的条件: 1、安装nodejs环境 2、安装vue环境 3、验证环境是否安装成功 二、实现上传步骤 1、前端部分使用 vue-cli 脚手架,搭建一个 demo 版本,能够实现简单交互: < template > < div id ="app" > < input type ="file" @change ="uploadFile" ></ button > </ div > </ template > 2、安装 axios 实现与后端交互: import Axios from 'axios' const Server = Axios.create({ baseURL: '/api' }) export default Server 3、后端使用 node-koa 框架: // index.js const Koa = require('koa' ); const router = require('koa-router')() // koa路由组件 const fs = require('fs') // 文件组件 const path = require('path') // 路径组件 const koaBody = require('koa-body') // 解析上传文件的插件 const static = require('koa

nodeJs + js 大文件分片上传

假如想象 提交于 2020-08-11 13:40:52
简单的文件上传 一、准备文件上传的条件: 1、安装nodejs环境 2、安装vue环境 3、验证环境是否安装成功 二、实现上传步骤 1、前端部分使用 vue-cli 脚手架,搭建一个 demo 版本,能够实现简单交互: < template > < div id ="app" > < input type ="file" @change ="uploadFile" ></ button > </ div > </ template > 2、安装 axios 实现与后端交互: import Axios from 'axios' const Server = Axios.create({ baseURL: '/api' }) export default Server 3、后端使用 node-koa 框架: // index.js const Koa = require('koa' ); const router = require('koa-router')() // koa路由组件 const fs = require('fs') // 文件组件 const path = require('path') // 路径组件 const koaBody = require('koa-body') // 解析上传文件的插件 const static = require('koa

Reading product metafields through Shopify ScriptTag API

百般思念 提交于 2020-08-10 19:11:28
问题 I'm building a Shopify embedded application with two main points of functionality: Upon install, product meta fields are populated with some values Upon page load, a custom script is injected into product page through shopify ScriptTag api The injected script displays some icon alongside the values from product meta fields. Currently, from the product page, the injected script is having to request the meta fields from my local server, which then queries the clients shopify for before sending

Reading product metafields through Shopify ScriptTag API

北慕城南 提交于 2020-08-10 19:10:08
问题 I'm building a Shopify embedded application with two main points of functionality: Upon install, product meta fields are populated with some values Upon page load, a custom script is injected into product page through shopify ScriptTag api The injected script displays some icon alongside the values from product meta fields. Currently, from the product page, the injected script is having to request the meta fields from my local server, which then queries the clients shopify for before sending