记一次开源项目求职经历(wangEditor)团队

341 阅读2分钟

胡说八说:

知道wangEditor是在上一家公司(威锋网), 当时前端项目同构, 社区编辑器要重新选型, 最开始选了wangEditor, 后面产品还是选了froala-editor, (私信功能用的wangEditor)

不久之前在掘金上看到开源项目wangEditor作者准备在招募小伙伴, 打着试一试的想法就报名了, 然后作者给了一个小任务作为考核  :

task:  使用 webpack + ts 实现加粗,设置颜色, 设置标题功能

环境配置:

webpack-dev-serve:进行热跟新

uglifyjs-webpack-plugin: 压缩打包代码

less、 less-loader:规范css书写

file-loader:处理工具栏iconfont

ts-loader、ts-lint

实现思路:

因为功能比较简单, 所以代码没什么难度, 当时写的时候也想尽量写的规范点, 写到最后感觉还是四不像, 以后有时间再重新好好整一下吧

  1. 创建构造函数: MiniEditor
  2. 通过 initProto 函数挂载实例方法 (这里没考虑周到,方法都挂载到实例上了,并没有挂载到构造函数上)
  3. 合并组件配置
  4. 创建dom片段
  5. 将生成的工具栏dom和编辑区域dom填充到创建的dom片段中
  6. 将生成的dom片段挂载到绑定dom上

合并组件配置

首先规范组件配置项:

export interface pluginOptions {  
    name: string // 组件名字  
    openType?: string // 组件点击行为: 目前只规范了click和dropdown两种方式  
    dropDownList?: Array<dropDownItems> // 下拉框传入:规范必须有label字段  
    isExtenal?: boolean // 是否是外置组件  
    iconName?: string // 工具栏图标目前只实现了iconfont模式, 外置组件必须传入iconName  
    callback: (...val: any) => any // 点击组件图标回调  
    dropDownCallback?: (...val: any) => any // 点击下拉框子项回调
}
  1. 通过 createPlugin 函数创建组件dom
  2. 通过 mergePlugins 函数合并组件配置并生成dom集合

其他的也没啥讲的, 写的挺不好的, 感觉还是技术不够, 菜是原罪啊

写在后面:

在写这个考核任务的时候想的挺多的, 脑子想着要怎么样做到最好, 但是同时想的越多就越不知道从哪里开始, 就是典型的脑子说我行, 手却不听使唤

最后写完还是有点心得, 就是要     **先开始     **不要在脑子里面想这个想那个, 先写个东西出来,不满意再改,在实打实的东西上改比在脑子里面改要来的实际。

默默的贴一个github链接:

github.com/86driver/mi…