摘要:
## 阅读要求
> 读者需要具备但不限于以下技能
- HTML
- JavaScript `es6更佳`
- CSS
一共四部分十五小节,适合七天的训练营。
从现在开始,我假装你已经掌握了 `html`、 `css`以及 `ES6` ☝️ 目标导向
本教程以实战项目驱动,以沪江英语微信小程序项目框架为基础,最终还原一个完整的小程序
列表页面:请求接口,并展示列表页面数据
iKcamp官网:http://www.ikcamp.com
访问官网更快阅读全部免费分享课程:《iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享》。
包含:文章、视频、源代码 阅读全文
摘要:
Node.js 10已经进入LTS时代!其应用场景已经从脚手架、辅助前端开发(如SSR、PWA等)扩展到API中间层、代理层及专业的后端开发。Node.js在企业Web开发领域也日渐成熟,无论是在API中间层,还是在微服务中都得到了非常好的落地。本书将通过Web开发框架Koa2,引领你进入Node.js的主战场!
本书系统讲解了在实战项目中使用Koa框架开发Web应用的流程和步骤。第1章介绍Node.js的安装、开发工具及调试。第2章和第3章介绍搭建Koa实战项目的雏形。第4章详细介绍HTTP基础知识及其实战应用。第5章介绍MVC、模板引擎和文件上传等实用功能。第6~8章介绍数据库、单元测试及项目的优化与部署。第9~13章介绍从零开始搭建时下火爆的微信小程序前端及后台管理应用的全部过程,以及最终的服务器部署,包括HTTPS、Nginx。
本书示例丰富、侧重实战,以完整的实战项目贯穿全部章节,并提供书中涉及的所有源码及部分章节的配套视频教程,将是前端开发人员立足新领域和后端开发人员了解Node.js并使用Koa2开发Web应用的得力助手。 阅读全文
摘要:
> React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React。
Web应用中,事件处理是重要的一环,事件处理将用户的操作行为转换为相应的逻辑执行或界面更新。在React中,处理事件响应的方式有多种,本文将详细介绍每一种处理方式的用法、使用场景和优缺点。 阅读全文
摘要:
> React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React。
组件是构建React应用的基本单位,组件需要具备数据获取、业务逻辑处理、以及UI呈现的能力,而这些能力是要依赖于组件不同的生命周期方法的。组件的生命周期分为3个阶段:挂载阶段、更新阶段、卸载阶段,每个阶段都包含相应的生命周期方法。因为是深入系列文章,本文不会仔细介绍每个生命周期方法的使用,而是会重点讲解在使用组件生命周期时,经常遇到的疑问和错误使用方式。 阅读全文
摘要:
### React 深入系列3:Props 和 State
> React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React。
React 的核心思想是组件化的思想,而React 组件的定义可以通过下面的公式描述:
```
UI = Component(props, state)
```
组件根据props和state两个参数,计算得到对应界面的UI。可见,props 和 state 是组件的两个重要数据源。 阅读全文
摘要:
### React 深入系列2:组件分类
> React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React。
React 组件有很多种分类方式,常见的分类方式有函数组件和类组件,无状态组件和有状态组件,展示型组件和容器型组件。好吧,这又是一篇咬文嚼字的文章。但是,真正把这几组概念咬清楚、嚼明白后,对于页面的组件划分、组件之间的解耦是大有裨益的。 阅读全文
摘要:
>React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React。
React 中的元素、组件、实例和节点,是React中关系密切的4个概念,也是很容易让React 初学者迷惑的4个概念。现在,老干部就来详细地介绍这4个概念,以及它们之间的联系和区别,满足喜欢咬文嚼字、刨根问底的同学(老干部就是其中一员)的好奇心。 阅读全文
摘要:
编程技巧,再通过装饰器的结合完全了关注上的分离。同时使用了Typescript(也支持Javascript)为主要开发语言,更保证了整个后端系统的健壮性。 阅读全文
摘要:
>官网:[https://qiu8310.github.io/minapp/](https://qiu8310.github.io/minapp/)
>作者:[Mora](https://github.com/qiu8310)
在原生小程序开发中,数据流是单向的,无法双向绑定,但是要实现双向绑定的功能还是蛮简单的!
> 下文要讲的是小程序框架 [minapp][minapp] 中实现双向绑定的原理,在 [minapp][minapp] 中,你只需要在 wxml 模板中给组件的属性名后加上 `.sync` 就可以实现双向绑定。下面为了解释其原理,过程可能会说的稍微复杂些,但其实 [minapp][minapp] 框架已经处理了那些繁杂的细节! 阅读全文
摘要:
如果你使用 React ,你可以在各个工程里面看到 [Dan Abramov](https://github.com/gaearon?tab=repositories) 的身影。他于 2015 年加入 facebook,是 React Hot Loader 、React Transform、redux-thunk、redux-devtools 等等的开发者。同样也是 React、Redux、Create-React-App 的联合开发者。从他的签名 *Building tools for humans.* 或许表明了他想打造高效的开发环境以及调试过程。
作为 Dan 的小迷妹,如他说 *is curious where the magic comes from*。这篇文章会带你们去了解 React Hot Loader 的由来,它实现的原理,以及在实现中遇到的问题对应的解决方法。也许你认为这篇文章太过于底层,对日常的业务并没有帮助,但希望你和我一样能通过了解一个实现得到乐趣,以及收获一些思路。 阅读全文
摘要:
**重新定义微信小程序的开发**
>官网:[https://qiu8310.github.io/minapp/](https://qiu8310.github.io/minapp/)
>作者:[Mora](https://github.com/qiu8310)
# minapp
**重新定义微信小程序的开发**
## 使用
1. 用 npm 安装命令行工具: `npm install -g @minapp/cli --registry "https://registry.npmjs.org/"` (避免从淘宝镜像上安装,它上面的还是老版本,已经给他们提了一个 [issue](https://github.com/cnpm/cnpm/issues/243))
2. 初始化项目:`minapp init <你要创建项目的文件夹>` (同时支持创建 js 和 ts 项目)
3. 安装两个 vscode 插件:[minapp][vscode-minapp] 和 [dot-template][vscode-dot-template](可选,但建议安装) 阅读全文
摘要:
与众不同的学习方式,为你打开新的编程视角
- 独特的『同步学习』方式
- 文案讲解+视频演示,文字可激发深层的思考、视频可还原实战操作过程。
- 云集一线大厂有真正实力的程序员
- iKcamp 团队云集一线大厂经验丰厚的码农,开源奉献各教程。
- 改版自真实的线上项目
- 教程项目并非网上随意 `Demo`,而是来源于真实线上项目,并改版定制为教程项目
- 源码开放
- 课程案例代码完全开放给你,你可以根据所学知识自行修改、优化。 阅读全文
摘要:
本篇中,我们会讲述三个知识点
- 定制书写规范
- 开发环境运行
- 如何部署运行
## 定制书写规范
> 文中所说的书写规范,仅供参考,非项目必需。
随着 `Node` 流行,`JavaScript` 编码规范已经相当成熟,社区也产生了各种各样的编码规范。但是在这里,我们要做的不是『限制空格的数量』,也不是『要不要加分号』。我们想要说的规范,是项目结构的规范。 阅读全文
摘要:
# 处理错误请求
> 爱能遮掩一切过错。
当我们在访问一个站点的时候,如果访问的地址不存在(404),或服务器内部发生了错误(500),站点会展示出某个特定的页面,比如:
那么如何在 `Koa` 中实现这种功能呢?其实,一个简单的中间件即可实现,我们把它称为 `http-error`。实现过程并不复杂,拆分为三步来看:
- 第一步:确认需求
- 第二步:整理思路
- 第三步:代码实现 阅读全文
摘要:
> 文:正龙(沪江网校Web前端工程师)
>本文原创,转载请注明作者及出处
之前的文章“[走进Node.js之HTTP实现分析](http://mp.weixin.qq.com/s?__biz=MzI1MTE2NTE1Ng==&mid=2649516579&idx=1&sn=cb3ef197a637429774d3eb297e01828f&chksm=f1efeaa8c69863bedfd102bca2abb67de44b92cfee99feb4825a73386617517856a2b64a8a87&scene=21#wechat_redirect)”中,大家已经了解 Node.js 是如何处理 HTTP 请求的,在整个处理过程,它仅仅用到单进程模型。那么如何让 Web 应用扩展到多进程模型,以便充分利用CPU资源呢?答案就是 Cluster。本篇文章将带着大家一起分析Node.js的多进程模型。 阅读全文
摘要:
经常逛 webpack 官网的同学应该会很眼熟上面的图。正如它宣传的一样,webpack 能把左侧各种类型的文件(webpack 把它们叫作「模块」)统一打包为右边被通用浏览器支持的文件。webpack 就像是魔术师的帽子,放进去一条丝巾,变出来一只白鸽。那这个「魔术」的过程是如何实现的呢?今天我们从 webpack 的核心概念之一 —— loader 来寻找答案,并着手实现这个「魔术」。看完本文,你可以:
- 知道 webpack loader 的作用和原理。
- 自己开发贴合业务需求的 loader。
## 什么是 Loader ?
在撸一个 loader 前,我们需要先知道它到底是什么。本质上来说,loader 就是一个 node 模块,这很符合 webpack 中「万物皆模块」的思路。既然是 node 模块,那就一定会导出点什么。在 webpack 的定义中,loader 导出一个函数,loader 会在转换源模块(resource)的时候调用该函数。在这个函数内部,我们可以通过传入 `this` 上下文给 Loader API 来使用它们。回顾一下头图左边 阅读全文
摘要:
# log 日志中间件
> 最困难的事情就是认识自己。
在一个真实的项目中,开发只是整个投入的一小部分,版本迭代和后期维护占了极其重要的部分。项目上线运转起来之后,我们如何知道项目运转的状态呢?如何发现线上存在的问题,如何及时进行补救呢?记录日志就是解决困扰的关键方案。正如我们每天写日记一样,不仅能够记录项目每天都做了什么,便于日后回顾,也可以将做错的事情记录下来,进行自我反省。完善的日志记录不仅能够还原问题场景,还有助于统计访问数据,分析用户行为。
## 日志的作用
* 显示程序运行状态
* 帮助开发者排除问题故障
* 结合专业的日志分析工具(如 ELK )给出预警 阅读全文
摘要:
在使用`React Native`开发中,我们熟练的采用`JavaScript`的方式发送请求的方式发送一个请求到服务端,但是处理这个请求的过程其实和处理`Web`应用中发送的请求的过程是不一样的。因为处理这个请求的目标不是浏览器,而是嵌入这个应用的原生操作系统。
![banner](https://user-gold-cdn.xitu.io/2018/1/19/1610c6e75e8ee153?w=1000&h=571&f=jpeg&s=128470)
在处理`React Native`的请求时,分为两部分:一部分是`JavaScript`的运行环境,另一部分是嵌入`JavaScript`的`Native`(即原生`Android`和`IOS`)运行环境。`React Native`内置了三种发送网络请求的方式:`fetch`, `XMLHttpRequest` 和 `WebSocket`。但是`React Native`的运行环境和Web应用的运行环境不一样,所以需要在原生应用层采用自定义函数来拓展运行时(runtime)环境来处理`JavaScrip 阅读全文
摘要:
> 作者:佳杰
> 本文原创,转载请注明作者及出处
# 如何实现VM框架中的数据绑定
## 一:数据绑定概述
视图(view)和数据(model)之间的绑定
## 二:数据绑定目的
不用手动调用方法渲染视图,提高开发效率;统一处理数据,便于维护
## 三:数据绑定中的元素
视图(view):说白了就是html中dom元素的展示
数据(model):用于保存数据的引用类型
## 四:数据绑定分类
view > model的数据绑定:view改变,导致model改变
model > view的数据绑定:model改变,导致view改变
## 五:数据绑定实现方法
view > model的数据绑定实现方法
修改dom元素(input,textarea,select)的数据,导致model产生变化,
只要给dom元素绑定change事件,触发事件的时候修改model即可,不细讲
model > view的数据绑定实现方法
1.发布订阅模式(backbone.js用到);
2.数据劫持 阅读全文
摘要:
# JSON 数据
> 我颠倒了整个世界,只为摆正你的倒影。
前面的文章中,我们已经完成了项目中常见的问题,比如 `路由请求`、`结构分层`、`视图渲染`、`静态资源`等。
那么,`JSON` 呢?`JSON` 格式数据的传输,已经深入到了我们的码里行间,脱离了 `JSON` 的人想必是痛苦的。那么,复合吧!
![](https://user-gold-cdn.xitu.io/2018/1/15/160f7c9ecbb9a8c3?w=200&h=198&f=jpeg&s=4791)
## 如何设置 JSON 格式
伟大的武术家——李小龙先生——说过这样一段话:
```txt
Empty your mind, Be formless,shapeless like water.
You put water in a cup, it becomes the cup.
You put water in a bottle, it becomes the bottle.
You put water in a teapot , i 阅读全文
摘要:
# 处理静态资源
> 无非花开花落,静静。
## 指定静态资源目录
这里我们使用第三方中间件: `koa-static`
### 安装并使用
安装 `koa-static`:
```js
npm i koa-static -S
```
修改 `app.js`,增加并指定 `/public` 目录为静态资源目录。 阅读全文
摘要:
# 视图 Nunjucks
> 彩虹是上帝和人类立的约,上帝不会再用洪水灭人。
客户端和服务端之间相互通信,传递的数据最终都会展示在视图中,这时候就需要用到『**模板引擎**』。
## 什么是模板引擎?
模板引擎是为了使用户界面与业务数据分离而产生的,可以生成特定格式的文档。例如,用于网站的模板引擎会生成一个标准的 `HTML` 文档。
市面上常见的模板引擎很多,例如:`Smarty`、`Jade`、`Ejs`、`Nunjucks` 等,可以根据个人喜好进行选择。`koa-views`、`koa-nunjucks-2` 等支持 `Koa` 的第三方中间件也可以自行选择。 阅读全文
摘要:
在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器、路由中间件、`Get` 和 `Post` 形式的请求处理等。现在你已经迈出了走向成功的第一步。
目前,整个示例中所有的代码都写在 `app.js` 中。然而在业务代码持续增大,场景更加复杂的情况下,这种做法无论是对后期维护还是对患有强迫症的同学来说都不是好事。所以我们现在要做的就是:『分梨』。 阅读全文
摘要:
# Http 请求
> 在学习了 `koa-router` 之后,我们就可以用它来处理一些常见的请求了,比如 `POST/GET` 。
`koa-router` 提供了 `.get`、`.post`、`.put` 和 `.del` 接口来处理各种请求,但实际业务上,我们大部分只会接触到 `POST` 和 `GET`,所以接下来只针对这两种请求类型来说明。
当我们捕获到请求后,一般都需要把请求带过来的数据解析出来。数据传递过来的方式一般有三种: 阅读全文
摘要:
# 路由 koa-router
> 上一节我们学习了中间件的基本概念,本节主要带大家学习下 `koa-router` 路由中间件的使用方法。
路由是用于描述 `URL` 与处理函数之间的对应关系的。比如用户访问 `http://localhost:3000/`,那么浏览器就会显示 `index` 页面的内容,如果用户访问的是 `http://localhost:3000/home`,那么浏览器应该显示 `home` 页面的内容。
要实现上述功能,如果不借助 `koa-router` 或者其他路由中间件,我们自己去处理路由,那么写法可能如下所示: 阅读全文
摘要:
# 文章
## middleware 中间件
> 正是因为中间件的扩展性才使得 `Koa` 的代码简单灵活。
在 `app.js` 中,有这样一段代码:
```js
app.use(async (ctx, next)=>{
await next()
ctx.response.type = 'text/html'
ctx.response.body = 'Hello World'
})
```
它的作用是:每收到一个 `http` 请求,`Koa` 都会调用通过 `app.use()` 注册的 `async` 函数,同时为该函数传入 `ctx` 和 `next` 两个参数。而这个 `async` 函数就是我们所说的中间件。 阅读全文
摘要:
* [小程序和 H5 区别](#xcx1)
* [小程序的运行过程](#xcx2)
* [解决小程序接口不支持 Promise 的问题](#xcx3)
* [小程序组件化开发及通信](#xcx4)
## 小程序和 H5 区别
> 我们不一样,不一样,不一样。
### 运行环境 runtime
首先从官方文档可以看到,小程序的运行环境并不是浏览器环境:
```txt
小程序框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。
小程序的视图层目前使用 WebView 作为渲染载体,而逻辑层是由独立的 JavascriptCore 作为运行环境。在架构上,WebView 和 JavascriptCore 都是独立的模块,并不具备数据直接共享的通道。当前,视图层和逻辑层的数据传输,实际上通过两边提供的 evaluateJavascript 所实现。即用户传输的数据,需要将其转换为字符串形式传递,同时把转 阅读全文
摘要:
# 文章
## Koa 起手 - 环境准备
由于 `koa2` 已经开始使用 `async/await` 等新语法,所以请保证 `node` 环境在 `7.6` 版本以上。
### 安装node.js
- 直接安装 node.js :node.js官网地址 [https://nodejs.org](https://nodejs.org)
- nvm管理多版本 node.js :可以用nvm 进行node版本进行管理
- Mac 系统安装 nvm [https://github.com/creationix/nvm#manual-install](https://github.com/creationix/nvm#manual-install)
- windows 系统安装 nvm [https://github.com/coreybutler/nvm-windows](https://github.com/coreybutler/nvm-windows)
- Ubuntu 系统安装 nvm [https://gi 阅读全文
摘要:
## 🇨🇳 与众不同的学习方式,为你打开新的编程视角
- 独特的『同步学习』方式
- 文案讲解+视频演示,文字可激发深层的思考、视频可还原实战操作过程。
- 云集一线大厂有真正实力的程序员
- iKcamp 团队云集一线大厂经验丰厚的码农,开源奉献各教程。
- 改版自真实的线上项目
- 教程项目并非网上随意 `Demo`,而是来源于真实线上项目,并改版定制为教程项目
- 源码开放
- 课程案例代码完全开放给你,你可以根据所学知识自行修改、优化。 阅读全文
摘要:
> 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTML 最坚实的梁柱;分享,是 CSS 里最闪耀的一瞥;总结,是 JavaScript 中最严谨的逻辑。经过捶打磨练,成就了本书的中文版。本书包含了函数式编程之精髓,希望可以帮助大家在学习函数式编程的道路上走的更顺畅。比心。
本书主要探索函数式编程[\[1\]](#note1)(FP)的核心思想。在此过程中,作者不会执着于使用大量复杂的概念来进行诠释,这也是本书的特别之处。我们在 JavaScript 中应用的仅仅是一套基本的函数式编程概念的子集。我称之为“轻量级函数式编程(FLP)”。
**注释:** 题目中使用了“轻量”二字,然而这并不是一本“轻松的”“入门级”书籍。本书是严谨的,充斥着各种复杂的细节,适合拥有扎实 JS 知识基础的阅读者进行研读。“轻量”意味着范围缩小。通常来说,关于函数式编程的 JavaScript 书籍都热衷于拓展阅读者的知识面,并企图覆盖更多的知识点。而本书则对于每一个话题都进行了深入的探究,尽管这种探究是小范围进行的。 阅读全文
摘要:
我的博客即将同步至腾讯云+社区,邀请大家一同入驻。 阅读全文
摘要:
如果您已经从头到尾通读了此书,请花一分钟的时间停下来回顾一下从第 1 章到现在的收获。相当漫长的一段旅程,不是吗?希望您已经收获了大量新知识,并用函数式的方式思考你的程序。
在本书即将完结时,我想给你提供一些关于使用官方函数式编程函数库的快速指南。注意这并不是一个详细的文档,而是将你在结束“轻量级函数式编程”后进军真正的函数式编程时应该注意的东西快速梳理一下。
如果有可能,我建议你**不要**做重新造轮子这样的事情。如果你找到了一个能满足你需求的函数式编程函数库,那么用它就对了。只有在你实在找不到合适的库来应对你面临的问题时,才应该使用本书提供的辅助实用函数 —— 或者自己造轮子。 阅读全文
摘要:
即使还没有读过我的文章《[在处理网络数据的 JavaScript 抽象的重要性](https://css-tricks.com/importance-javascript-abstractions-working-remote-data/)》,你也很有可能已经意识到代码的可维护性和可扩展性很重要,这也是介绍 `JavaScript` 抽象的目的。
为了更加清楚的说明,我们假设在 `JavaScript` 中抽象是一个模块。
一个模块的最初实现只是它们漫长(也许是持久的)的生命周期过程的开始。我将一个模块的生命周期分成 3 个重要阶段。
1. 引入模块。在项目中编写该模块或复用该模块;
2. 调整模块。随时调整模块;
3. 移除模块。 阅读全文
摘要:
首先,我坦白:在开始写以下内容之前我并不太了解 Monad 是什么。我为了确认一些事情而犯了很多错误。如果你不相信我,去看看 [这本书 Git 仓库](https://github.com/getify/Functional-Light-JS) 中关于本章的提交历史吧!
我在本书中囊括了所有涉及 Monad 的话题。就像我写书的过程一样,每个开发者在学习函数式编程的旅程中都会经历这个部分。
尽管其他函数式编程的著作差不多都把 Monad 作为开始,而我们却只对它做了简要说明,并基本以此结束本书。在轻量级函数式编程中我确实没有遇到太多需要仔细考虑 Monad 的问题,这就是本文更有价值的原因。但是并不是说 Monad 是没用的或者是不普遍的 —— 恰恰相反,它很有用,也很流行。
函数式编程界有一个小笑话,几乎每个人都不得不在他们的文章或者博客里写 Monad 是什么,把它拎出来写就像是一个仪式。在过去的几年里,人们把 Monad 描述为卷饼、洋葱和各种各样古怪的抽象概念。我肯定不会重蹈覆辙! 阅读全文
摘要:
### 组合柯里化
这一步是最棘手的。所以请慢慢的用心的阅读。
让我们看看没有将 `listCombination(..)` 传递给柯里化函数的样子:
```js
var x = curriedMapReducer( strUppercase );
var y = curriedFilterReducer( isLongEnough );
var z = curriedFilterReducer( isShortEnough );
```
看看这三个中间函数 `x(..)`, `y(..)` 和 `z(..)`。每个函数都期望得到一个单一的组合函数并产生一个 reducer 函数。
记住,如果我们想要所有这些的独立的 reducer,我们可以这样做:
```js
var upperReducer = x( listCombination );
var longEnoughReducer = y( listCombination );
var shortEnoughReducer = z( listCombination );
```
阅读全文
摘要:
Transducing 是我们这本书要讲到的更为高级的技术。它继承了第 8 章数组操作的许多思想。
我不会把 Transducing 严格的称为“轻量级函数式编程”,它更像是一个顶级的技巧。我把这个技术留到附录来讲意味着你现在很可能并不需要关心它,当你确保你已经非常熟悉整本书的主要内容,你可以再回头看看这一章节。
说实话,即使我已经教过 transducing 很多次了,在写这一章的时候,我仍然需要花很多脑力去理清楚这个技术。所以,如果你看这一章看的很疑惑也没必要感到沮丧。把这一章加个书签,等你觉得你差不多能理解时再回头看看。
Transducing 就是通过减少来转换。
我知道这听起来很令人费解。但是让我们来看看它有多强大。实际上,我认为这是你掌握了轻量级函数式编程后可以做的最好的例证之一。
和这本书的其他部分一样,我的方法是先解释**为什么**使用这个技术,然后**如何**使用,最后归结为简单的这个技术到底是什么样的。这通常会有多学很多东西,但是我觉得用这种方式你会更深入的理解它。 阅读全文
摘要:
# JavaScript 轻量级函数式编程
# 第 11 章:融会贯通
现在你已经掌握了所有需要掌握的关于 JavaScript 轻量级函数式编程的内容。下面不会再引入新的概念。
本章主要目标是概念的融会贯通。通过研究代码片段,我们将本书中大部分主要概念联系起来并学以致用。
建议进行大量深入的练习来熟悉这些技巧,因为理解本章内容对于将来你在实际编程场景中应用函数式编程原理至关重要。 阅读全文
摘要:
如今的 Web 前端已被 React、Vue 和 Angular 三分天下,一统江山十几年的 jQuery 显然已经很难满足现在的开发模式。那么,为什么大家会觉得 jQuery “过时了”呢?一来,文章《[No JQuery! 原生 JavaScript 操作 DOM](https://www.sitepoint.com/dom-manipulation-vanilla-javascript-no-jquery/)》就直截了当的告诉你,现在用原生 JavaScript 可以非常方便的操作 DOM 了。其次,jQuery 的便利性是建立在有一个基础 DOM 结构的前提下的,看上去是符合了样式、行为和结构分离,但其实 DOM 结构和 JavaScript 的代码逻辑是耦合的,你的开发思路会不断的在 DOM 结构和 JavaScript 之间来回切换。
尽管现在的 jQuery 已不再那么流行,但 jQuery 的设计思想还是非常值得致敬和学习的,特别是 jQuery 的插件化。如果大家开发过 jQuery 插件的话,想必都会知道,一个插件要足够灵活,需要有细颗粒度的参数化设计。一个 阅读全文
摘要:
🇨🇳 微信小程序课程,面向所有具备前端基础知识的同学 🇨🇳
## 阅读要求
> 读者需要具备但不限于以下技能
- HTML
- JavaScript `es6更佳`
- CSS
一共四部分十五小节,适合七天的训练营。
从现在开始,我假装你已经掌握了 `html`、 `css`以及 `ES6` ☝️ 阅读全文
摘要:
## 详情 - 功能完善
> 本文配套视频地址:
> https://v.qq.com/x/page/f0555nfdi14.html
---
> 开始前请把 `ch4-3` 分支中的 `code/` 目录导入微信开发工具
> 这一节中,我们把详情的其他功能完善起来:下一篇、 分享、 返回列表。
### Step 1. 增加 `下一篇` 功能
增加 `下一篇` 的功能,我们需要在视图中绑定一个事件,来触发代码中的响应函数,此函数会调用接口,返回下一篇文章内容数据。 阅读全文
摘要:
Promise 自问世以来,得到了大量的应用,简直是 javascript 中的神器。它很好地解决了异步方法的回调地狱、提供了我们在异步方法中使用 return 的能力,并将 callback 的调用纳入了自己的管理,而不是交给异步函数后我们就无能为力了(经常有 callback 被莫名调用两次而导致程序出错)。
今天要介绍的是 Promisify,就是回调函数与 Promise 间的桥梁。
## 1. promisify 介绍
什么是 promisify 呢?顾名思义,就是“promise 化”,将一个不是promise的方法变成 promise 。举个例子:
```javascript 阅读全文