我是 justjavac,可以来问我任何问题!

#1

大家好,我是 justjavac。

从我的名字可以看出我之前是一名 java & C 程序员,后来不小心入了前端的坑。已在前端深耕 8 年。

目前正在知乎连载 V8 专栏。曾经打算出版一本《代码之谜》,但是由于种种原因而未能如愿。

其实也是无心插柳,本来就是随便写了一篇文章「代码之谜:其实你不懂代码」,发在了 CSDN 和 iteye,谁曾想当夜的访问量就破万了,如今两篇文章的访问量分别是 20 万和 30 万。

了解我的更多信息可以在:SegmentFault 专访:我的编程之路——「懒惰」是程序员最大的美德,想听声音可以在:开源和写作 - justjavac

在这个帖子里,可以问我任何问题,不仅包括 JavaScript、ES20xx、V8、Chrome、Nodejs 等前端技术问题,还包括工作、生活、求职、加薪……

提问的有效时间是 24 小时左右,我将在明天(星期三,2018-04-25)挑选合适的问题做解答。

好吧,开始提问吧。

6 Likes
活动预告, justjavac 的 AMA, 周二周三进行
活动预告, justjavac 的 AMA, 周二周三进行
pinned globally #2
#3

为什么 nodejs 迟迟没有实现 es6 modules?

1 Like
#4

如何成为一名让人崇拜的全栈工程师

#5

迷渡大大,前端小白如何晋升为大白实现薪资翻番?

1 Like
#6

java 转前端如何进阶,现在写了一年半的前端,感觉到瓶颈了。

#7

问题一、前端圈提到 Node.js 似乎都离不开全栈,但是圈外的也有不少声音,类似“别动不动就全栈、真是误导人…”。能不能说一下,优秀的全栈工程师需要具备什么技能?

问题二、Web 开发工程师(可以的话,可以从 Web 前端 / Web 后端 / Web 全端 一起讲述,或者不)刚开始工作后,一年和三年的职业发展规划分别应该怎么做?

问题三、目前公司技术氛围不浓厚,作为员工,怎么去改善?

问题四、原本是 C/Java 程序员,为何转向前端,并活跃于前端社区(看了您的 Github 多为前端相关),衍生一个问题,怎么看待技术圈内的鄙视链?

5 Likes
#8

作为一名二线城市的前端(一年工作经验),想去一线城市,迷渡大大有什么好的建议么。

#9

首答。

nodejs 一直在实现,而且已经实现了。目前 esm 需要手动开启 --experimental-modules

虽然实现了,但是并没有我们想象中的那么美好。

因为 CommonJS 并不兼容于 ES Modules。而 esm 使用扩展名 .mjs。所以我们要这么用:

node --experimental-modules my-app.mjs

mjs 扩展名是 Modular JavaScript 的意思。ES Modules 都放在 .mjs 文件里面,而 commonjs 则放在 .js 文件里面。

比如 main.mjs 里面:

export const foo = 'bar'

那么必须在另一个 .mjs 文件里面导入:

import { foo } from './01-kettle.mjs'

console.log(foo) // ==> bar

遵循的规则是:

  • ESM 的扩展名必须是 .mjs
  • CJS 的扩展名必须是 .js
  • 只有 ESM 允许 export/import
  • 只有 CJS 允许 require

如果把 CJS 和 ESM 混合使用时:

  • 在 CJS 中使用 ESM,但是只能使用 await import()(动态导入)
  • 在 ESM 使用 CJS,使用 import 语句,但是只能使用 default import

如果在 main.js 里面写 const { foo } = require('./app.mjs') 则抛出异常。因为 cjs 不能导入 esm。

改成这么写 import { foo } from './app.mjs' 一样会抛出异常。因为在 .js 扩展名只能使用 cjs。

我们可以这么用:

async function main() {
 const { foo } = await import('./app.mjs');
}

至于浏览器端的 esm,如果没有 http2,esm 也只能搭配 webpack 使用。

2 Likes
#10

对于前端,如何学习sql语言,数据库操作,字段定义,ORM,redis缓存这些后台的知识,例如如果用node做社区的话,用那种数据库,是否要用到ngix

3 Likes
#11

你好,我现在勉强可以称得上是一个两年经验的node开发,水平大概是没有读过源码,文档层面上的已经比较熟了,大多都涉猎运用过。我想问一下jjc大佬,现在的我适合再学一门其他的语言吗?如果学的话应该选择什么呢?是c/c++ 还是 java,抑或是go呢?我个人想做的是多服务方向,总觉得一门node不够。

2 Likes
#12

你好,我之前听过你的live,我又从新看了一遍。有两个问题

  1. 前端如何入门?
    成为前端程序员前提是成为程序员

  2. 进现在的公司工作了快三个月了,学习到很多,自己工作之余也不断扩展对前端的了解。现在的感觉是:(注: 问题不全)

    *遇到了瓶颈,可能问题不是前端,是前端之外的,可能是工程化,可能是算法

当初在听这两个问题的时候。我一点感觉都没有,觉得大佬又骗我们学新东西。也了解过计算机操作系统,编译原理,计算机网络这类计算机基础学科。但是都是看一页,因为看不懂,感觉这些东西离自己太远了,觉得自己就是程序员。 现在醒悟了,感觉自己还是too yang。野路子出来的,该还的还得还。 准备学习c 语言, 看到好多经典书籍都是他描述的,学习一下。
废话有点多了,问题
背景: 职业前端,其他语言不会。计算机基础太弱

  1. 成为前端程序员前提是成为程序员, 您更给出具体的意见吗,书籍,教程,步骤等?
  2. 学c语言您能有啥建议吗?
    问题质量不是很高谢谢
1 Like
#13

如何解读react源码,入手点在哪儿?

2 Likes
#14

关于涨薪,有一个很残酷的事实是:大部分开发者的薪资翻倍都是通过跳槽实现的。

为什么呢?

因为大部分公司都没有完善的晋升考评体系,只有你跳槽的时候,市场才会重新用钱来评估你的技术水平。而在你不换工作的情况下,你的薪资是由公司的业绩来决定的(对于大部分公司来说)。

王者荣耀部门的年终奖是 120 个月的工资,试问,他们的技术水平真的比其它部门强 10 倍吗。

而且薪资也不单单是由技术来决定,而是一个人的综合能力,还有技术的深度。

我遇到过很多应聘者,虽然工作三五年了,在我看来他只是“只有3个月的工作经验,然后重复了5年”。很多开发者对技术爆炸(知识过剩)有种危机感和恐惧感。什么都想学,什么都研究,但是仅仅停留在皮毛,而且把这种心态称之为“好学”。其实这是迷茫。

在每个领域都缺少深耕者。

给大家一个建议:

精通 one,学习 another,关注 next

6 Likes
#15

代码之谜的系列文章还会更新吗?

#16

请问 “精通 one” 这个 “one” 能展开说一说吗?

#17

想精通javascript,但是发现需要精通js更需要扩展知识范围,才能继续更加明白为什么是这样设计的。

#18

感谢!目前我的状态就是这个迷茫,也许静下心先把某一框架学通透才是对的。

1 Like
#19

你好,想问下… 对于React v16.3的新生命周期… getDerivedStateFromProps去除了current props的访问,建议存储在state里这一点怎么看

#20

1. 您感觉最好的编程思想(或原则)是什么?

2. 能否列出最喜欢三条编程原则?

1 Like