V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nekocode
V2EX  ›  程序员

第一次写 Web 页面

  •  
  •   nekocode ·
    nekocode · 2018-02-23 17:37:13 +08:00 · 4758 次点击
    这是一个创建于 2469 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前一直没接触过前端开发,最近终于尝试写了个简单的页面 nekocode.cn/project-gallery,没用任何框架纯手写 Html / Css / Js。 个人感觉是 Js 的标准库很弱啊,很多常见的工作都没有提供官方接口(导致 JQuery 这类库的出现)。

    而且现在前端开发明显是工具 & 框架为王的时代吧?感觉脱离工具和框架想开发复杂点的应用太难了。


    另求推荐比较小而美的前端开发 工具 /技术 栈。

    38 条回复    2018-02-25 02:39:29 +08:00
    fangchang
        1
    fangchang  
       2018-02-23 17:43:57 +08:00
    vuejs + semantic ui
    TabGre
        2
    TabGre  
       2018-02-23 17:47:22 +08:00
    React 全家桶
    xmsz
        3
    xmsz  
       2018-02-23 17:49:39 +08:00
    说真的
    我现在开发一个页面不是单页东西的流程就是

    git 一个项目
    本地一个 clone
    vs code 新建一个 html
    然后引入
    zepto vue 的 cdn

    大概 2 分钟环境就有了


    ---
    然后打开 vs code 的 live code
    完美达到效果

    ---
    而且不需要要任何环境因素
    brickyang
        4
    brickyang  
       2018-02-23 19:25:58 +08:00
    能否举几个「常见的工作都没有提供官方接口」的例子?

    推荐 React 全家桶。

    但,「小」的前端框架工具栈是不存在的。
    yanqing07
        5
    yanqing07  
       2018-02-23 19:51:26 +08:00
    我推荐 angular4-5 (逃
    murmur
        6
    murmur  
       2018-02-23 19:54:35 +08:00
    第一次推荐 react 的是什么心态
    vue 上不上 vuex 都很简单
    react 上不上 redux 和 rxjs 是 随机、H、M 的难度区别
    plqws
        7
    plqws  
       2018-02-23 20:00:32 +08:00
    用 Vue 足矣,Vuex Redux 什么的都是项目上了规模才可能会用得到的。
    另外根本不需要 Zepto 啊 jQuery 啊,只要搞懂双向绑定和 MVVM 就行了,楼主搞安卓开发的弄明白这些个东西不会难的
    Kilerd
        8
    Kilerd  
       2018-02-23 20:12:53 +08:00
    @murmur 我看 Vue 看了几次,自己写都不知道从何写起。React 一次过,写起来极其流畅。
    oswuhan
        9
    oswuhan  
       2018-02-23 20:28:41 +08:00   ❤️ 1
    PO 主先看一下回答问题的人有多少是从事前端开发的。

    前端开发通常都是在解决类似这样的问题
    https://www.v2ex.com/t/431475

    负责任的说,这类问题与开发工具、技术栈的选择关系并不大,关键还是解决问题的思路。

    思路从何而来?

    除了 C/S 开发的基础知识以外,WEB 开发基础的重中之重是 CSS 的 BFC、ES5 的相关特性、浏览器端 DOM 与 js 解析器等等……掌握这些知识,才有想出思路的可能。

    当然,有人会说,碰到类似的问题完全可以搜索相关的插件、框架、库等工具,把别人的轮子拿来用即可,何必自己造轮子?

    外人看来你是在造轮子,其实你是在构建自己的整车生产车间。买轮子的人,买完轮子还得买其它零件,东拼西凑一通,就跟印度阿三的“万国军”一样,看起来很气派无比,实则不堪一击。

    至于 jq/git/node/vue/ng/react/webpack......主要还是用来提升开发效率,提升程序的健壮性等等。
    oswuhan
        10
    oswuhan  
       2018-02-23 20:32:02 +08:00
    @Kilerd 做前端的难点在于写什么,而不是怎么写,用户总是更青睐新鲜的事物,后端可以重用,前端必须不断推陈出新
    murmur
        11
    murmur  
       2018-02-23 20:39:35 +08:00
    @oswuhan 更新鲜的事物不等于最新的技术
    jquery 也可以做出很赞的设计 而且这部分偏偏是纯前端做不到的 各种动画 banner 必须得有美工和交互设计师
    现在的审美都被 apple 毁了 盲目追寻扁平化设计 什么网站都是 bs 风格 nav+logo+文字 /图 /文字 /图。。。。
    murmur
        12
    murmur  
       2018-02-23 20:40:56 +08:00
    @Kilerd 你应该选一个好点的脚手架
    oswuhan
        13
    oswuhan  
       2018-02-23 20:45:44 +08:00
    @murmur

    误解我了,我的新鲜事物不是指的技术,而是指的包括视觉、操作在内的感官体验,前端开发者必须假设用户不懂技术才能开发出让用户满意的作品。

    你后面说的问题我之前再 v2 与人讨论过。要想在感官体验让用户满意,关键还是在于相关设计规范的制定与实施,参与角色除了设计师、前端程序员以外,还得有知识面同时覆盖设计与前端的规范制定者与监督者。
    oswuhan
        14
    oswuhan  
       2018-02-23 20:50:42 +08:00
    @murmur

    我#10 的重点在“做前端的难点在于写什么”这句话上,用别人的思路只会写出与别人的雷同的东西,工具只能用来提升工作效率,而不能用来替代思考、创造的过程
    nekocode
        15
    nekocode  
    OP
       2018-02-23 20:53:45 +08:00
    @brickyang 例如 jquery 里的 hasClass() 这类方法。

    @murmur @plqws 看了下 react 和 vue 的对比,其实我挺喜欢 jsx,但感觉 vue 学习成本低一些。

    @oswuhan 我明白你想表达什么,但你这样说了等于没说。。我就想选个适合尝试的框架而已

    还有就是,像 mithril.js 还有 rio.js 这类更小的框架有人用过么?
    zhwithsweet
        16
    zhwithsweet  
       2018-02-23 21:01:48 +08:00 via iPhone
    原生有个 classList api 可以搞定你说的 hasClass 问题。
    react 写起来非常舒服,vue 在某种意义上是写配置,当然我工作主力是 vue。
    司徒正妹有个 miniReact 非常小。
    最后,真正爱编程的人,是不会满足搞前端的。奋战在前端一线大多是我这种野路子程序员。
    (十分想提高技术,逃
    brickyang
        17
    brickyang  
       2018-02-23 21:04:37 +08:00 via iPhone
    oswuhan
        18
    oswuhan  
       2018-02-23 21:05:18 +08:00
    @nekocode

    那就直接点: 框架选主流的,真正商用的项目不会固定采用一种技术方案,该重构的时候就重构;

    react 和 vue 本质上没啥区别,都是将发展多年的前端开发思想、策略、原理、模式、算法封装为了一套工具栈,侧重点不同而已,要想活学活用工具,还是得看懂背后的思想、策略、原理、模式、算法,并且还是绕不过我#9 说的问题……
    murmur
        19
    murmur  
       2018-02-23 21:05:30 +08:00
    @nekocode jsx 只是一个比较垃圾的 template 比(请注意有些人不要来纠正我,对于我来说如果你不玩花样这就是 template 而且还不如 template 完善,比如缺少重要的 for 和 if 标签,也不要吹你的 es6 语法多牛逼)
    我在意的是 redux 和 rxjs
    去掉 redux 和 rxjs 这俩完全是白菜和萝卜的区别
    oswuhan
        20
    oswuhan  
       2018-02-23 21:09:45 +08:00
    @nekocode

    浏览器端 API 统一是大趋势,外加 MV*架构与单项数据流、双向绑定等思想的普及,以及移动端 web 先天性优势,jq 退出历史的舞台是迟早的事情。
    murmur
        21
    murmur  
       2018-02-23 21:17:06 +08:00
    @oswuhan 除非啥时候安卓的性能能追评到 ipx 那个流畅性
    目前 mvvm 在移动端上 batch insert 是硬伤
    而在 jquery 时代一个 template 轻松搞定
    nekocode
        22
    nekocode  
    OP
       2018-02-23 21:18:00 +08:00
    @brickyang 感谢!我之前 Google 的时候没找到这方法,搜到的都是用正则来匹配 className 的。。

    @oswuhan jq 就是方便操作 dom 而已吧,但现在都流行双向绑定、vdom 什么的,都不需要手动操作 dom 了。
    oswuhan
        23
    oswuhan  
       2018-02-23 21:20:23 +08:00
    @murmur

    2018 年了,兄 dei,不跟你争了……时间倒退 5 年,谁不认同你的观点我愿意陪你一起喷
    nekocode
        24
    nekocode  
    OP
       2018-02-23 21:22:24 +08:00
    @murmur 我也想在前端用上 rx。所以可以 vue + vuex + rxjs 这样选么?
    oswuhan
        25
    oswuhan  
       2018-02-23 21:25:39 +08:00
    @nekocode

    我就是这个意思,不需要操作 dom,jq 迟早要退……另外,我推荐你看下《高程》,有几个章节专门介绍包括 classList 在内的很多 API,尤其是那些搜索引擎搜不到,搜到了但没有解释清楚,而主流框架底层依赖很普遍的 API
    murmur
        26
    murmur  
       2018-02-23 21:34:21 +08:00
    @oswuhan 我们在用小米 4 做最低的性能测试 安卓 4.4 我认为这是底线了
    前几天有要求兼容安卓 4.2 的红米推了好久才推掉
    而小米 4 下渲染七八十个 node 的页面 vue 已经很卡了 每个元素都是 createElement 即便是虚拟 dom 都都明显的卡顿
    oswuhan
        27
    oswuhan  
       2018-02-23 21:39:26 +08:00
    @nekocode @murmur

    解析 jsx 的那个库叫作 ReactDOM,前端眼中的视图是由 DOM 渲染而来的,是动态的 Object,有状态,有属性,可以绑定事件……而 template 是用来渲染静态视图,渲染的过程本质上是由模板字符串渲染为 HTML 字符串。

    所以,两个概念完全不同。
    murmur
        28
    murmur  
       2018-02-23 21:40:50 +08:00
    @oswuhan 干着和 template 一样的事但是还不如 template 好使 我这么理解可以么 你写成了 jsx 语法糖 这种类 html 语法
    相比之下还是 vue 的 template 部分更人性一些
    你这么说 vue 的.vue 里的 template 段也可以先编译成 js 语句啊
    oswuhan
        29
    oswuhan  
       2018-02-23 21:51:32 +08:00
    @murmur

    #28 新年快乐,有机会再聊
    brickyang
        30
    brickyang  
       2018-02-23 23:07:04 +08:00 via iPhone
    @nekocode JavaScript 发展很快。也不是说应该完全不用 jQuery,但也推荐你试试 React 和 ES6,可能会发现和写 HTML+jQuery 完全不是一种开发方式。都试试没坏处。

    另外,大量操作 DOM 还是原生最快,无论是 React 还是什么库都不行。

    每种工具都有它要解决的问题,不是盲目堆工具就好。
    nekocode
        31
    nekocode  
    OP
       2018-02-23 23:33:27 +08:00
    @brickyang 嗯谢谢,准备尝试下。
    slgz
        32
    slgz  
       2018-02-24 13:23:35 +08:00
    @oswuhan 前端的工作写什么。 难道,不是应该由设计师和产品经理制定的吗,前端,只要把图片变成网页就行了吧。至于其他,美化什么管前端什么事,各司其职
    nekocode
        33
    nekocode  
    OP
       2018-02-24 13:40:51 +08:00   ❤️ 1
    @slgz 个人感觉越先进的公司,职位之间的界限是越模糊的。例如在知乎,只研究产品需求的纯产品经理是特别少,更多的是产品设计师、产品数据师等。
    前端 & 后端、前端 & UI / 交互设计、前端 & 可视化 等都是同理。

    国外的公司应该更加如此,全栈的工程师会需求更大。
    hiroya
        34
    hiroya  
       2018-02-24 13:46:51 +08:00   ❤️ 2
    js 标准库并不弱,我自己的网站用的也是原生。你需要的一个艺术家的点子 /设计。
    现在都被各种框架如同 react/vue/ng 这样的框架吸引了,这些框架的确很优秀,但是这些库并不完全适合所有的网站开发。这些只是为解决数据交互流的开发痛点而产生。

    而看题主的意思我猜只是想做一些漂亮点的网页,这些完全用不到楼上很多人说的 mvvm 框架,原生或者 jQuery 足够了,可以看看一些小众网站,设计得比较漂亮的网站 ex: http://slow-start.com/ 这种大量都是原生 css 和 js,如果题主想做的更炫酷网站的话,mo.js 或者 three.js 这种 WebGL 库

    如果题主的意思是寻找 mini 的前端库主要做数据交互流的话 react 写了用 preact 来代替打包,同样非常小巧。github 用户 egoist 写的前端库也是非常小巧,基本都是 kb 级别的。
    slgz
        35
    slgz  
       2018-02-24 16:32:49 +08:00
    @nekocode 看来还是我见识少呀,我一直以为,大公司往往都是分的很细。只有小公司才是全栈
    oswuhan
        36
    oswuhan  
       2018-02-24 16:59:15 +08:00
    @slgz

    #32 你的理解没有什么不对,我再补充一下,设计师出设计稿(包括视觉和交互),前端输出代码,难就难在两者殊途同归,换句话说就是前端需要精确还原设计稿,包括但不仅限于布局、样式、动画等等。

    #35 此“全栈”特指思想上的“全栈”,而非“技术”上的全栈。举一个例子,产品设计师确定产品采用响应式设计(设计规范),设计师负责实现具体的响应式设计(视觉稿),前端负责将视觉稿转化为响应式设计的网页(代码)。该流程中,产品和设计师不用写代码,前端不需要作图,但在“响应式设计”这个问题上,三个角色思想一致,最终输出的产品才不会有偏差。
    slgz
        37
    slgz  
       2018-02-24 17:08:46 +08:00
    @oswuhan 明白了,通俗的讲都是万精油角色咯。只不过,不需要去做实现,但是要知道什么意思。 关于这个观点,我表示赞同,毕竟,现在 IT 行业,如果只会一个领域找工作都难。hh
    ericgui
        38
    ericgui  
       2018-02-25 02:39:29 +08:00
    @Kilerd 我也是,我实在看不懂 Vue
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5343 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:50 · PVG 11:50 · LAX 19:50 · JFK 22:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.