自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

前端精髓

前端与移动开发

  • 博客(11)
  • 资源 (1)
  • 论坛 (1)
  • 收藏
  • 关注

原创 vue-ssr

const Vue = require('vue')const server = require('express')()const renderer = require('vue-server-renderer').createRenderer({ template: require('fs').readFileSync('./index.template.html', 'utf-8') // 指定模板})server.get('*', (req, res) => { const

2021-04-26 08:58:57 9

原创 使用Axios Api调用的Vuex完整指南示例

使用vuex,我们可以轻松管理状态。因为如果您的组件需要共享和更新状态,那么就需要它。在本篇文章中,我将为您提供完整的vuex设置,其中包括带有axios调用api获取数据的示例。因此,让我们开始我们的vuex教程。现在,通过在终端中运行以下代码来创建Vue项目:vue create vuex-app现在我们必须安装vuex和axios。所以打开终端并一个接一个地运行两个命令。npm install vuex//thennpm install axios在您的 store 文件夹中,创

2021-04-25 19:40:22 4

原创 使用Axios Api调用的Redux完整指南示例

使用redux,我们可以轻松管理状态。因为如果您的组件需要共享和更新状态,那么就需要它。在本篇文章中,我将为您提供完整的redux设置,其中包括带有axios调用api获取数据的示例。因此,让我们开始我们的redux教程。现在,通过在终端中运行以下代码来创建React项目:npx create-react-app my-app现在我们必须安装redux和react-redux。所以打开终端并一个接一个地运行两个命令。npm install redux//thennpm install re

2021-04-25 19:36:06 6

原创 微信小程序Canvas原有接口不再维护

画布。2.9.0 起支持一套新 Canvas 2D 接口(需指定 type 属性),同时支持同层渲染,原有接口不再维护。<!-- canvas.wxml --><canvas type="2d" id="myCanvas"></canvas>// canvas.jsPage({ onReady() { const query = wx.createSelectorQuery() query.select('#myCanvas')

2021-04-22 19:53:09 12

原创 source-map

eval - 每个模块都使用 eval() 执行,并且都有 //@ sourceURL。此选项会非常快地构建。主要缺点是,由于会映射到转换后的代码,而不是映射到原始代码(没有从 loader 中获取 source map),所以不能正确的显示行数。eval-source-map - 每个模块使用 eval() 执行,并且 source map 转换为 DataUrl 后添加到 eval() 中。初始化 source map 时比较慢,但是会在重新构建时提供比较快的速度,并且生成实际的文件。行数能够正确映射

2021-04-10 11:55:15 27

原创 TS中的infer

假如想在获取数组里的元素类型,在不会infer之前我是这样做的:type Ids = number[];type Names = string[];type Unpacked<T> = T extends Names ? string : T extends Ids ? number : T;type idType = Unpacked<Ids>; // idType 类型为 numbertype nameType = Unpacked<Names>; //

2021-04-04 16:07:59 48

原创 TS中的条件类型(ReturnType)

本偏介绍TS另一种高级类型-条件类型。官方文档:https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types1、条件类型是一种由条件表达式所决定的类型2、条件类型使类型具有了不唯一性,同样增加了语言的灵活性例如:T extends U ? X : Y若类型T可被赋值给类型U,那么结果类型就是X类型,否则就是Y类型。条件类型约束泛型约束的例子:typ

2021-04-04 10:11:41 74

原创 ts中的强制类型转换

先看一个例子:type T = { title: string}type U = { color: string}let result = <T&U>{}result.title = '北京'result.color = 'red'如果我们写了一个空对象,需要给这个对象添加属性,这个时候是会报错的:let result = {}// 报错:提示不存的属性result.title = '北京'这个时候我们需要进行强制类型转换:type T = {

2021-04-03 21:15:42 154

原创 TS类型推论

这节介绍TypeScript里的类型推论。即,类型是在哪里如何被推断的。基础TypeScript里,在有些没有明确指出类型的地方,类型推论会帮助提供类型。如下面的例子let x = 3;变量x的类型被推断为数字。从赋值中推断出来,类型从右向左流动function add (a: number, b: number) { return a + b}let c = add(1,2)通过return关键字推断出返回值类型,这叫底部流出type Sum = (a: numbe.

2021-04-03 12:06:16 18

原创 TS中的unknown类型

我们可以对 any 进行任何操作,不需要检查类型。let value:any;value = ture;value = 1;value.length;没有类型检查就没有意义了,跟写JS一样。很不安全。unknown也可以把任何值赋值给 unknownlet value:any;value = ture;value = 1;但是不能调用属性和方法value.length; // 错误写法如果需要调用属性和方法,那么你可能需要类型断言let value:unknown;va.

2021-04-03 11:08:48 103

原创 TS中的&交叉类型

interface A { name: string; sex: number;}interface B { age: number; sex: number;}type C = A&Blet c:C = { name: 'xxx', age: 18, sex: 1 }既是A的子类型,又是B的子类型,既要满足A又要满足Btype AA = string | number;type BB = string | boolean;type CC = AA &

2021-04-03 10:32:56 40

移动端横向picker组件

使用vue开发移动端横向滚动的picker组件,不依赖任何框架和库,使用原生JS编写,组件代码约300行,代码难度一般。

2019-01-05

最新版本谷歌浏览器无法显示svg

发表于 2019-04-11 最后回复 2019-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除