2025-04-25 00:17:14,下班比较晚,到家附近已经23点多了,久违的遇到了23点之后可以享受优惠充电的机会,但是事还是没有做完...

打开电脑,看着一堆的tab栏,想着先清理一下,于是一边看之前的浏览tab,一边好像进入了一种心流的状态,看着张鑫旭博客,看着陈伟华大佬的技术追求与天花板,趁着要关闭tab,把没记录下来的技术细节,写一下,再看着自己已经很久没有记录过的所谓的技术,突然感觉有点陌生又熟悉的味道

回长沙已经4年多了吧,21年3月,回望那时候,想起老婆现在的嘲讽,“之前不是说好的,回...

- 阅读剩余部分 -

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

  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>替换,然后递归下去,直到找不到\`符号,于是在经过一番调试,抓脑之后,写成了现在的版本:

- 阅读剩余部分 -