一直苦恼了很久的一个问题就是:

  1. 在mpvue源码中的runtime/lifecycle.js中,原先的createMP函数是在initMP函数里面的,而现在的master分支上确实被抽离出来,但问题是找不到引用createMP的地方了???
  2. 打包后的代码的改变:
// 最新的master上,运行npm run build:mpvue,后packages/mpvue/index.js
var entryRuntime = {
  Vue: Vue$2,
  createMP: createMP
};
return entryRuntime;

// 在使用[mpvue-quickstart](https://github.com/mpvue/mpvue-quickstart)创建的项目中node_modules中的mpvue/index.js是:
return Vue$3;

可以看到打包后的代码,在最新的master上是多了一个entryRuntime的包裹,而实际使用mpvue的时候,直接是把Vue返回的。

- 阅读剩余部分 -

自定义指令

首先直接说一下自定义指令的简单认识:

注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令

在上述官方文档中说的也很清楚,自己的体会就是,自定义指令通过提供钩子函数暴露出当前指令绑定的dom元素、指令值(binding对象)、vnode等从而提供了底层操作的可能,方便开发者去实现封装、重用dom处理的逻辑。

总而言之,当有一些通用的dom操作想重用,或者复杂的dom操作不想揉杂到代码里,不妨用一下自定义指令。

- 阅读剩余部分 -

在react的一个评论组件中,大致如下的写法:

render() {
    return (
        <form>
            <div>
                <label htmlFor="username">用户名: </label>
                <input
                  type="text"
                  name="username"
                  value={ this.state.username }
                  onChange={ this.handleOnChange.bind(this, 'username') }
                  required
                ></input>
            </div>
            <div>
                <label htmlFor="commentContent">评论内容: </label>
                <textarea
                  ref={ textarea => this.textArea = textarea }
                  value={this.state.commentContent}
                  onChange={ this.handleOnChange.bind(this, 'commentContent') }
                  name="commentContent"
                  cols="30"
                  rows="10"
                ></textarea>
            </div>
            <button onClick={ this.submitComment.bind(this) }>发布</button>
        </form>
    );
  }

其中的form表单里面使用了原生button元素,神奇的是,每次发表评论后,页面会重新加载,这就很可怕了。在大佬的帮助下,debug的过程略过,结论就是:

在form表单中的button如果没有显示写明type属性为什么,则默认是为type="submit"

- 阅读剩余部分 -

昨天在学习reactjs小书的时候遇到一个string相关的问题,也就是这样的一个需求:

用户会在textarea中输入文本,当提交文本,在下方显示的时候,要对具有``这样的字符围起来的字符串进行<code></code>的转化(也就是markdown中的行内代码语法)

直接字符替换

起初没多想,不就是字符替换吗?而且这就是个递归问题嘛,遇到第一个`符号用<code>替换遇到第二个`符号用</code>替换,然后递归下去,直到找不到`符号,于是在经过一番调试,抓脑之后,写成了现在的版本:

- 阅读剩余部分 -

经历了一波感觉暗无天日的秋招以后,总算能稍微松口气了,先把自己一直想写的博客,记录一下

源码的入口

首先,可以看到的是koa源码中就只有lib目录里面有四个文件:

  • application.js
  • context.js
  • request.js
  • response.js

按我们的使用方法:

const Koa = require('koa');
const a
...

- 阅读剩余部分 -