<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[开心大表哥]]></title><description><![CDATA[在前端大神的道路上越走越远]]></description><link>https://blog.youkuaiyun.com/a419419</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a419419]]></copyright><item><title><![CDATA[eval跟new Function的区别是什么?是否有共同点?]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/124286349</link><guid>https://blog.youkuaiyun.com/a419419/article/details/124286349</guid><author>a419419</author><pubDate>Tue, 19 Apr 2022 23:37:26 +0800</pubDate><description><![CDATA[​
eval()是一个危险的函数， 它使用与调用者相同的权限执行代码。如果你用eval()运行的字符串代码被恶意方（不怀好意的人）修改，您最终可能会在您的网页/扩展程序的权限下，在用户计算机上运行恶意代码。更重要的是，第三方代码可以看到某一个eval()被调用时的作用域，这也有可能导致一些不同方式的攻击。相似的Function就不容易被攻击。

​]]></description><category></category></item><item><title><![CDATA[Set Map Array Object互转 weekSet weekMap iterator是什么 有什么用 区别是什么 会使用吗 entries fromEntries]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/124251028</link><guid>https://blog.youkuaiyun.com/a419419/article/details/124251028</guid><author>a419419</author><pubDate>Mon, 18 Apr 2022 15:41:35 +0800</pubDate><description><![CDATA[// Object.entries() 获取对象的键值对
// Object.fromEntries把键值对列表转换成对象
// Object.entries和Object.fromEntries之间是可逆的
// Set和Map的entries()返回iterator对象

// Object转Map
let obj = {foo:'hello', bar: 100};
let map = new Map(Object.entries(obj));
console.log(map); // Map(2).]]></description><category></category></item><item><title><![CDATA[从零到一快速开发一套前端质量/错误监控系统，webpack打包时sourceMap收集及上传到后台，后台nodejs+express反向解析线上报错代码，定位到源码中报错的位置然后给出提示]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/124158499</link><guid>https://blog.youkuaiyun.com/a419419/article/details/124158499</guid><author>a419419</author><pubDate>Wed, 13 Apr 2022 22:23:51 +0800</pubDate><description><![CDATA[项目介绍
1.前端质量/报错监控系统整体思路实现逻辑
2.开发一个webpack plugin插件收集使用者的sourcemap到云端
3.使用者初始化报错系统的sdk，然后运行，报错时收集错误上报云端
4.云端根据收集到的报错信息及之前拿到的sourcemap进行解析，确认报错位置
下面是一个比较完整的流程图，我demo项目中还没有这么完善，但是有了一个整体的构架，主要目的是用于学习

代码仓库：https://github.com/adminadmin1234/deep-study-webpack/tr]]></description><category></category></item><item><title><![CDATA[vue-cli4.0+nodejs多个项目共用组件动态打包单个项目]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/103648383</link><guid>https://blog.youkuaiyun.com/a419419/article/details/103648383</guid><author>a419419</author><pubDate>Sat, 21 Dec 2019 21:28:07 +0800</pubDate><description><![CDATA[前言：
公司经常会有一些活动，为了配合活动开发人员需要开发一些h5页面来配合活动，刚开始活动不多，所有活动页面都放在一个项目目录下，webpack共用一个固定打包入口，对路由(vue-router)和状态管理(vuex)进行模块划分，不同的活动页面通过不同的路由路径来加载。
随着活动项目增多，页面也越来越多，问题就就出现了，比如打包projectA，webpack也会把projectB,proje...]]></description><category></category></item><item><title><![CDATA[react入门-由vue到react开发的历程]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/101752916</link><guid>https://blog.youkuaiyun.com/a419419/article/details/101752916</guid><author>a419419</author><pubDate>Mon, 30 Sep 2019 09:38:59 +0800</pubDate><description><![CDATA[待续

]]></description><category></category></item><item><title><![CDATA[gitlab-ci前端在阿里云实现nodejs可持续化集成部署]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/94624002</link><guid>https://blog.youkuaiyun.com/a419419/article/details/94624002</guid><author>a419419</author><pubDate>Thu, 04 Jul 2019 15:47:07 +0800</pubDate><description><![CDATA[前言
不甘心当一个切图仔，所以什么都要学一下；可持续化集成是一个项目工程架构的问题；但在这篇文章中我将它缩小到了前端的领域内。
必要条件

一台阿里云服务器-2核4G以上(我的心好痛800大洋)

技术栈

linux操作基础
git/github/gitlab
nodejs环境基础

步骤

...]]></description><category></category></item><item><title><![CDATA[vue源码分析系列:用sourcemap调试源码]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/91493026</link><guid>https://blog.youkuaiyun.com/a419419/article/details/91493026</guid><author>a419419</author><pubDate>Wed, 12 Jun 2019 11:49:36 +0800</pubDate><description><![CDATA[由于前几篇文章是用vue-cli直接分析的，今天我们学习直接调试vue源码。
安装vue（mac机)
1.在GitHub上克隆官方的vue-地址
2.安装依赖npm install
修改vue项目
1.在package.json script dev 增加--sourcemap指令
"dev": "rollup -w -c scripts/config.js --environment TARGE...]]></description><category></category></item><item><title><![CDATA[vue源码分析系列四：createElement和update]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/91382526</link><guid>https://blog.youkuaiyun.com/a419419/article/details/91382526</guid><author>a419419</author><pubDate>Mon, 10 Jun 2019 16:18:22 +0800</pubDate><description><![CDATA[createElement
Vue.js 利用 createElement 方法创建 VNode，它定义在 src/core/vdom/create-elemenet.js 中：
// wrapper function for providing a more flexible interface
// without getting yelled at by flow
export functi...]]></description><category></category></item><item><title><![CDATA[vue源码分析系列三：render的执行过程和Virtual DOM的产生]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/91042816</link><guid>https://blog.youkuaiyun.com/a419419/article/details/91042816</guid><author>a419419</author><pubDate>Thu, 06 Jun 2019 13:50:19 +0800</pubDate><description><![CDATA[render
手写 render 函数，仔细观察下面这段代码，试想一下这里的 createElement 参数是什么 。
new Vue({
    el: '#application',
    render(createElement) {
        return createElement('div', {
            attrs: {
                id...]]></description><category></category></item><item><title><![CDATA[vue源码分析系列二：$mount()和new Watcher()的执行过程]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/90897845</link><guid>https://blog.youkuaiyun.com/a419419/article/details/90897845</guid><author>a419419</author><pubDate>Wed, 05 Jun 2019 10:18:56 +0800</pubDate><description><![CDATA[续vue源码分析系列一：new Vue的初始化过程
在initMixin()里面调用了$mount()
if (vm.$options.el) {
     vm.$mount(vm.$options.el);// 挂载dom元素
}

$mount()方法定义
vm的原型上本身就定义了一个$mount(如下所示)，然后通过重写$mount方法，最后返回的时候，调用这个缓存$mount方法。
//...]]></description><category></category></item><item><title><![CDATA[vue源码分析系列一：new Vue的初始化过程]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/90764860</link><guid>https://blog.youkuaiyun.com/a419419/article/details/90764860</guid><author>a419419</author><pubDate>Tue, 04 Jun 2019 10:50:25 +0800</pubDate><description><![CDATA[import Vue from ‘vue’（作者用的vue-cli一键生成）
node环境下import Vue from 'vue'的作用是什么意思？
在 NPM 包的 dist/ 目录你将会找到很多不同的 Vue.js 构建版本。这里列出了它们之间的差别：

具体参考：官网
完整版：同时包含编译器和运行时的版本。
编译器：用来将模板字符串编译成为 JavaScript 渲染函数的代码。
运行时...]]></description><category></category></item><item><title><![CDATA[全栈式开发,前端工程化,以nodejs,eggjs为服务器语言,mysql为数据库,vue,vuex,wangeditor,i18n,webpack前端架构服务器端渲染ssr支持seo的博客网站]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/90677076</link><guid>https://blog.youkuaiyun.com/a419419/article/details/90677076</guid><author>a419419</author><pubDate>Wed, 29 May 2019 19:35:20 +0800</pubDate><description><![CDATA[前言
下面介绍本人开发的个人博客，希望通过开源的方式一起学习和进步！
1. 背景
该项目为一个学习型的博客网站案例，毕竟每个it工程师都想有一个自己的博客嘛，适合初中级前端工程师；项目已经部署在阿里云上，已经比较完整了，本地下载代码和安装好对应的环境，运行即可以获得线上的效果。由于项目涉及到服务器端而且用了数据库作为存储工具，架构用了eggjs和easywebpack所以首次运行的步骤比较繁琐，还...]]></description><category></category></item><item><title><![CDATA[详细理解重绘与回流/重排的过程]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/90402561</link><guid>https://blog.youkuaiyun.com/a419419/article/details/90402561</guid><author>a419419</author><pubDate>Tue, 21 May 2019 10:53:59 +0800</pubDate><description><![CDATA[前言：重绘与回流是由于浏览器的再次渲染所引起的一个话题，所以我们需要先了解浏览器的渲染过程；
一个前端页面无非就是有hmtl、css、JavaScript组成的。
通常来说，渲染引擎会解析HTML文档来构建DOM树，与此同时，渲染引擎也会用CSS解析器解析CSS文档构建CSSOM树。接下来，DOM树和CSSOM树关联起来构成渲染树（RenderTree），这一过程称为Attachment。然后浏览...]]></description><category></category></item><item><title><![CDATA[vue使用moment.js经webpack打包后超级大的原因和解决方案]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/86690645</link><guid>https://blog.youkuaiyun.com/a419419/article/details/86690645</guid><author>a419419</author><pubDate>Tue, 29 Jan 2019 15:34:21 +0800</pubDate><description><![CDATA[Moment.js 是一个 JavaScript 日期处理类库，用于解析、检验、操作、以及显示日期，使用起来十分方便。
但是它经过webpack打包之后会变得十分的大。
我们做一下对比：
测试版本：“moment”: “^2.17.1”,
没import moment from 'moment';前
webpack打出来的index.js包：
js/chunk/index/index.eb9cbc...]]></description><category></category></item><item><title><![CDATA[阿里云轻量应用服务器实例id找不到无法备案]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/85914885</link><guid>https://blog.youkuaiyun.com/a419419/article/details/85914885</guid><author>a419419</author><pubDate>Sun, 06 Jan 2019 10:33:22 +0800</pubDate><description><![CDATA[阿里云轻量应用服务器实例id找不到无法备案
最近买了一个轻量应用服务器，做了一个个人网站，感觉做得不错，所以想将域名备案了，增加百度排名。
于是去备案：

结果找不到实例id。
谷歌、百度很久都找不到答案；最终只能打电话问客服了。
阿里云客服给出来的答案是我买的是香港的服务器；想要备案只能是中国大陆的
原来买的服务器不能转换地域，所以我只能重新买一个中国大陆的服务器了（mmp）。

...]]></description><category></category></item><item><title><![CDATA[linux移动文件到另一个文件夹]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/85251482</link><guid>https://blog.youkuaiyun.com/a419419/article/details/85251482</guid><author>a419419</author><pubDate>Tue, 25 Dec 2018 17:30:12 +0800</pubDate><description><![CDATA[复制指定目录下的全部文件到另一个目录中
1.文件及目录的复制是经常要用到的。linux下进行复制的命令为cp。
假设复制源目录 为 dir1 ,目标目录为dir2。怎样才能将dir1下所有文件复制到dir2下了
如果dir2目录不存在，则可以直接使用
cp -r dir1 dir2
即可。
如果dir2目录已存在，则需要使用
cp -r dir1/. dir2
例：
// 没有publicData...]]></description><category></category></item><item><title><![CDATA[支付宝小程序跳转到h5页面web-view]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/85248307</link><guid>https://blog.youkuaiyun.com/a419419/article/details/85248307</guid><author>a419419</author><pubDate>Tue, 25 Dec 2018 15:10:03 +0800</pubDate><description><![CDATA[支付宝小程序跳转到h5页面web-view
基础库 1.6.0 开始支持，低版本需做兼容
 组件是一个可以用来承载H5网页的组件，会自动铺满整个小程序页面。
web-view 要渲染的H5网页URL。H5网页URL需要登录小程序管理后台-小程序详细-设置中，进行H5域名白名单配置
示例代码：
&amp;amp;lt;!-- axml --&amp;amp;gt;
&amp;amp;lt;!-- 指向支付宝首页的web-view --&amp;amp;gt;
&amp;amp;...]]></description><category></category></item><item><title><![CDATA[支付宝小程序复制到剪贴板]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/85246753</link><guid>https://blog.youkuaiyun.com/a419419/article/details/85246753</guid><author>a419419</author><pubDate>Tue, 25 Dec 2018 13:50:50 +0800</pubDate><description><![CDATA[支付宝小程序复制到剪贴板
my.getClipboard
获取剪贴板数据。
Page({
  data: {
    text: '3.1415926',
    copy: '',
  },
  
  handlePaste() {
    my.getClipboard({
      success: ({ text }) =&amp;amp;gt; {
        this.setData({ cop...]]></description><category></category></item><item><title><![CDATA[nodejs egg多静态文件入口配置]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/85087937</link><guid>https://blog.youkuaiyun.com/a419419/article/details/85087937</guid><author>a419419</author><pubDate>Wed, 19 Dec 2018 08:03:08 +0800</pubDate><description><![CDATA[由于egg多静态资源入口在一开始的时候是没有的，是后来增加的；但是文档写得不是太清楚所以小白不容易弄懂。
在config.default.js文件中增加这个，将项目根目录下的public、publicData这两个文件夹作为静态资源入口；运行的时候egg会将这两个文件夹的资源放到prefix: '/public/'配置的/public路径下。
  exports.static = {
    pr...]]></description><category></category></item><item><title><![CDATA[Mac上传文件到阿里云的Linux服务器,linux下载文件到Mac,unzip/zip压缩和解压文件]]></title><link>https://blog.youkuaiyun.com/a419419/article/details/85050585</link><guid>https://blog.youkuaiyun.com/a419419/article/details/85050585</guid><author>a419419</author><pubDate>Mon, 17 Dec 2018 15:47:16 +0800</pubDate><description><![CDATA[1.打开默认终端，左上角选择新建远程连接

2.选择安全文件传输(sftp)
2.1.点击右边服务器下的加号添加你要连接的远程服务器ip地址

2.2.添加成功后右边服务器列表会出现你新加的这个ip地址，然后选中它；点击连接。

3.首次连接一个服务器会让你确认（Are you sure you want to continute connecting(yes/no)）,你输入yes然后回车就可以...]]></description><category></category></item></channel></rss>