最前端

技术最前端,专注 Web 技术学习与总结。JavaScript, JS, ES6, TypeScript, Vue, PHP, CSS3, Html5, Node, Git, Markdown 等技术文章。

vuePress-theme-reco jimco    2014 - 2025
最前端 最前端
首页
索引
  • 分类
  • 标签
  • 归档
收藏
  • 网站
  • 资源
  • 文章
  • 书单
知识库
  • 前端

    • JS
    • CSS
    • HTML
  • 计算机通识

    • 网络
实验室
  • 手册

    • CSS3 参考手册 (opens new window)
    • HTML 参考手册 (opens new window)
    • NodeJS 参考手册 (opens new window)
    • PHP 参考手册 (opens new window)
  • 工具

    • CSS 格式化 (opens new window)
    • 在线编辑器 (opens new window)
author-avatar

jimco

73 文章
100 标签

首页
索引
  • 分类
  • 标签
  • 归档
收藏
  • 网站
  • 资源
  • 文章
  • 书单
知识库
  • 前端

    • JS
    • CSS
    • HTML
  • 计算机通识

    • 网络
实验室
  • 手册

    • CSS3 参考手册 (opens new window)
    • HTML 参考手册 (opens new window)
    • NodeJS 参考手册 (opens new window)
    • PHP 参考手册 (opens new window)
  • 工具

    • CSS 格式化 (opens new window)
    • 在线编辑器 (opens new window)

笔记 Categories

vuePress-theme-reco jimco    2014 - 2025
  • 前端 51
  • 后端 4
  • 笔记 20
  • 浏览器 3
  • 工程化 7
  • 运维 11
  • 算法 2
关于你所不知道的 TypeScript

译文:One Thing Nobody Explained To You About TypeScript

我已经使用 TypeScript 超过四年了,总的来说,这是一次非常棒的体验。随着时间的推移,使用它的摩擦逐渐减少,直到完全消失,这使得我在编写类型或以类型优先的方式解决问题时变得更加高效。虽然我还远未成为真正的类型大师,但我敢说自己已经熟练掌握了这门语言,经历了类型体操、条件类型、嵌套泛型,并深刻理解了 type 和 interface 之间的神圣差异。说实话,我认为我对这门语言已经有了相当不错的理解。

直到我发现我错了。其实,有一个关于 TypeScript 的特定问题我完全理解错了,我相信你也可能犯过同样的错误。而这并不是某个你从未听说过、可能永远不会用到的复杂边缘案例。恰恰相反,这是你和其他所有 TypeScript 开发者直接交互过数百次的东西,一直在我们眼前游弋。

jimco 2024/08/29 typescript
软件程序设计原则

软件也像人一样,具有生命力,从出生到死亡,会经历多种变化。软件架构设计也不是一蹴而就的,是不断地演进发展。每个程序员都可以从理解编程原则和模式中受益。

软件设计原则是一组帮助我们避开不良设计的指导方针。根据 Robert Martin 的理论,应该避免不良设计的以下三个重要特点:

  • 僵化:很难做改动,因为每一个细微的改动都会影响到系统大量的其他功能
  • 脆弱:每当你做一次改动,总会引起系统中预期之外的部分出现故障
  • 死板:代码很难在其他应用中重用,因其不能从当前应用中单独抽离出来

下面这些软件设计原则是我从一些书籍和网络中收集而来,并不完整,而且你也需要在一些有「冲突的原则」之间进行权衡和取舍。本文或许会对你的编程、程序设计、讨论或评审工作有所帮助。

jimco 2022/05/20 programsolid程序设计
从 Generator 入手读懂 co 模块源码

# Generator

异步编程一直是 JS 的核心之一,业界也是一直在探索不同的解决方法,从「回调地狱」到发布订阅模式,再到 Promise,都是在优化异步编程。尽管 Promise 已经很优秀了,也不会陷入「回调地狱」,但是嵌套层数多了也会有一连串的 then,始终不能像同步代码那样直接往下写就行了。Generator 是 ES6 引入的进一步改善异步编程的方案,下面我们先来看看基本用法。

jimco 2021/05/26 generator
NodeJS 命令行开发

# 可执行脚本

首先,使用 JavaScript 语言,写一个可执行脚本 hello

#!/usr/bin/env node
console.log('hello world');

然后,修改 hello 的权限:

chmod 755 hello

现在,hello 就可以执行了:

$ ./hello
hello world
jimco 2018/08/25 npmnodeshell
浏览器的协商缓存与强缓存

# 什么是浏览器缓存

浏览器缓存(Brower Caching)是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档。

浏览器缓存的优点有:

  1. 减少了冗余的数据传输,节省了网费

  2. 减少了服务器的负担,大大提升了网站的性能

  3. 加快了客户端加载网页的速度

jimco 2017/02/28 httpcachebrowser
Javascript 按位运算解析

# 1. 按位非 ~

对每一个比特位执行非(NOT)操作。NOT a 结果为 a 的反转(即反码)。

var num = ~4;
console.log(a); // -5

解析:

4 的二进制数为 100,补满32位

00000000000000000000000000000100

按位取反

11111111111111111111111111111011

由于32位开头第一个是 1,所以这是一个负数,将二进制转换成负数,需要先反码

00000000000000000000000000000100

之后,再+1

00000000000000000000000000000101

转换成十进制为 5,加上符号变成负数 -5

jimco 2016/04/25 bitbinary
不用中间变量交换两个数值变量的值
  1. 加减法

    var a = 1,
        b = 2;
    
    a = a + b;
    b = a - b;
    a = a - b;
    
    console.log(a, b); // 2, 1
    
jimco 2016/04/05 algorithm
Javascript 代码片段笔记

# 千位分隔符

function commafy(num) {

    num = num + '';

    var reg = /(-?\d+)(\d{3})/;

    while(reg.test(num)) {
        num = num.replace(reg, '$1,$2');
    }

    return num;
}
jimco 2016/03/30 routerpromiseevent
前端优秀文章导航

# Javascript

  • Javascript 操作 DOM 常用 API 总结

  • JavaScript 单线程和浏览器事件循环简述

  • javascript事件机制详解(涉及移动兼容)

  • 了解 JavaScript 应用程序中的内存泄漏

  • 从本质认识 JavaScript 的原型继承和类继承

  • JavaScript 基于时间的动画算法

  • 深度解析原型中的各个难点

  • 3 种不同的原型继承: ES6+ 版本

  • JavaScript 创建对象: 方法一览与最佳实践

jimco 2016/03/22 javascriptcss
-webkit-text-size-adjust 使用说明

-webkit-text-size-adjust 是为了保持网页字体大小的一个属性,因为有些网页的字体缩小以后,难以识别,并且也严重影响到用户体验,如果在全局定义了 html { -webkit-text-size-adjust: none; } 会导致另一个现象:浏览器一般提供给小群体用户一个功能,就是放大与缩小网页视图。禁用了这一属性,在 chrome 下放大网页,会导致其它元素均放大,而文字却依然为原定义的 12px。

jimco 2016/03/19 css
上一页 1 ... 12 ... 2 下一页