What does “–” (double-dash) mean?

比较合理的解释是 – 可以将后面的字符标记成字符串,而不是 -,所以它是为了让命令行区分是配置还是字符串。

例如:

1
2
3
npm run build -- -v 
#实际上执行
npm run build "-v"

Angular 路由跳转

1
2
3
<a routerLink="/heroes/{{id}}">点击查看文章详情</a>
<!--or-->
<a [routerLink]="['/heroes', num]">点击查看文章详情</a>
1
2
//110 是 rest 参数
this.router.navigate(['/index',110], { queryParams: { productId: '1', title: 'moon' } });

Stencil

Stencil - 生成 Web Components 的框架

也是一种框架,语言类似于 Angular+React,用它写的组件可以编译成 Web Component 在任何框架运行。

SOA 、ESB、微服务

SOA

Service Oriented Architecture,一种指导理念

微服务

微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言,不同的数据存储技术,运行在不同的进程之中。服务采取轻量级的通信机制和自动化的部署机制实现通信与运维。

ESB

一种实现 SOA 实现的方案/框架

资料

什么是康威定律

organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations

设计系統的架构受制于产生这些设计的组织的沟通结构。

为什么不用 token 代替 cookie 防止 xss 攻击

  • cookie 可以让前端不需要关注登录逻辑

  • 前后端不分离的话,后端代码不方便操作 localStorage 等浏览器储存库存取 token

怎么扣微信阅读的 API

1
2
3
4
5
// web 上获取 API
https://weread.qq.com/web/review/list?bookId=36557713&listType=3&maxIdx=0&count=3&listMode=2&code=fake&synckey=0

//将 weread.qq.com/web 改为 i.weread.qq.com 变成
https://weread.qq.com/web/review/list?bookId=36557713&listType=3&maxIdx=0&count=3&listMode=2&code=fake&synckey=0

[generate_204](web - I regularly see gstatic.com in the status bar, what is that domain? - Super User)

谷歌储存静态资源的地址,分离静态资源减少带宽的占用,为终端用户提升网络性能。

好处:

  • 浏览器一般会限制与单个服务器的建连数,一般是 2 个,虽然可配置但是一般用户不去关心,所以如果静态资源分离到不同域名(不同服务器),可以提交建连数

  • 通过禁用 cookies 和其他 HTTP 请求头部来减少网络传输占据的带宽

  • 分离动静态资源可以更方便的将资源托管到 CDN,只托管静态资源。

微服务和微前端

微服务

后端将应用拆分成一个能独立运行的服务,通过 RPC(例如 HTTP)进行通信。

好处:

  • 技术栈无关

  • 可以独立运行、独立部署

  • 代码拆分,减少复杂度,只关注自己负责部分的代码

微前端

微服务在前端应用的概念,前端将应用拆分成多个微小应用,可以在同一个运行环境下运行,通过自定义的通信手段进行服务间的通信。

好处和微服务一致。

依赖倒置/依赖注入原则

  • 把原本的高层建筑依赖底层建筑“倒置”过来,变成底层建筑依赖高层建筑。高层建筑决定需要什么,底层去实现这样的需求,但是高层并不用管底层是怎么实现的。这样就不会出现前面的“牵一发动全身”的情况。

  • 所谓依赖注入,就是把底层类作为参数传入上层类,实现上层类对下层类的“控制”。

https://www.zhihu.com/question/23277575

单元测试的意义

  • 测试驱动开发

  • 保证代码质量

  • 重构的定海神针

  • 使用示例

  • 关注质量的意识

如何删除所有的Git Tag

1
2
3
4
git tag -d $(git tag -l)
git fetch
git push origin --delete $(git tag -l)
git tag -d $(git tag -l)

什么是 Git LFS?

Git 是分布式 版本控制系统,这意味着在克隆过程中会将仓库的整个历史记录传输到客户端。对于包涵大文件(尤其是经常被修改的大文件)的项目,初始克隆需要大量时间,因为客户端会下载每个文件的每个版本。

Git LFS(Large File Storage)是由 Atlassian, GitHub 以及其他开源贡献者开发的 Git 扩展,它通过延迟地(lazily)下载大文件的相关版本来减少大文件在仓库中的影响,具体来说,大文件是在 checkout 的过程中下载的,而不是 clone 或 fetch 过程中下载的(这意味着你在后台定时 fetch 远端仓库内容到本地时,并不会下载大文件内容,而是在你 checkout 到工作区的时候才会真正去下载大文件的内容)。

Pass、Sass、IaaS 区别

  • SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。普通用户接触到的互联网服务,几乎都是 SaaS,下面是一些例子。

  • PaaS 提供软件部署平台(runtime),抽象掉了硬件和操作系统细节,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。**下面这些都属于 PaaS。

  • IaaS 是云服务的最底层,主要提供一些基础资源。它与 PaaS 的区别是,用户需要自己控制底层,实现基础设施的使用逻辑。下面这些都属于 IaaS。

ISV 和 SI 是什么?

  • ISV 是 Independent Software Vendors 的英文缩写,意为“独立软件开发商”,特指专门从事软件的开发、生产、销售和服务的企业,如微软(Microsoft)、甲骨文(Oracle)等。

  • SI 系统集成商(英文System Integrator),是指具备系统资质,能对行业用户实施系统集成的企业。系统集成包括

    • 设备系统集成(硬件系统集成商、弱电集成商)

      • 智能建筑系统集成商

      • 计算机网络系统集成商

      • 安防系统集成商(安防工程商)

    • 应用系统集成(行业信息化方案解决商)

Salesforce.com has two partner programs. Select your primary program of interest.

  • The Independent Software Vendor (ISV) program is for partners who want to build and sell apps.
  • The System Integrator (SI) program is for partners who plan to deliver services related to salesforce.com.

还有另外的说法,ISV 是自产自销的,SI 是协助售卖 salesforce.com 上的应用