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

正儿八经做项目的时候还是会选择 PHP

  •  
  •   Wangxf · 2015-12-04 21:26:03 +08:00 · 4425 次点击
    这是一个创建于 3278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大多数情况下 PHP 就够用了, PHP 虽然说被人鄙视得不行,语言设计也毫无亮点,但是重在两个字:好用, node 啥的写点辅助前端开发的工具,搭个博客还行,大部分情况下是没有机会在服务端用到的,拿 node 写业务逻辑,那叫一个蛋疼,总感觉不够稳(可能我水平不行吧

    33 条回复    2015-12-08 17:12:02 +08:00
    snachx
        1
    snachx  
       2015-12-04 21:43:18 +08:00   ❤️ 1
    一般来说,正儿八经做项目的时候还是会选择你最熟悉的语言...
    Wangxf
        2
    Wangxf  
    OP
       2015-12-04 21:47:45 +08:00
    @snachx 还真不是,我本职是前端, php , node 都马马虎虎,但是感觉 PHP 周边要强,什么支付宝 sdk ,微信 sdk 都会至少提供 PHP , Java 两个版本
    kikyous
        3
    kikyous  
       2015-12-04 21:49:48 +08:00 via Android
    对啊,总感觉 js 代码很不可靠
    msg7086
        4
    msg7086  
       2015-12-04 21:56:01 +08:00
    @Wangxf 「 php , node 都马马虎虎」
    所以你并没有一个特别熟悉的语言 /框架……
    Wangxf
        5
    Wangxf  
    OP
       2015-12-04 22:01:06 +08:00 via iPhone
    @msg7086 马马虎虎就是能用 node or php 两种方式做个逻辑不太复杂的 web 项目后对于两者的使用感受,两个都熟悉和两个都马马虎虎这个没问题啊,两者都是在一个水平层次下进行比较
    msg7086
        6
    msg7086  
       2015-12-04 22:09:11 +08:00
    @Wangxf 我说的特别熟悉,是说曾经用某种语言,鉴选出一个合适的框架,然后开发一个或者多个企业级产品并上线使用,这样的程度。
    PS: 语言真的不重要。如果你有参与过架构设计的话,应该就会知道,现在的 MicroService 时代,对于你说的 SDK 只有 PHP 的问题,只要放一个独立的微型服务在那里暴露一个 API 做代理就行了,主程序用什么语言写都行。

    当然个人小型项目随便做做的话用什么语言都行,反正技术含量不高,直接学一下就能战了。
    loading
        7
    loading  
       2015-12-04 22:18:43 +08:00 via Android
    其实 java 更多示范代码~
    wormcy
        8
    wormcy  
       2015-12-04 22:20:00 +08:00
    写正经项目必须用最好的语言
    eoo
        9
    eoo  
       2015-12-04 22:39:58 +08:00 via Android
    PHP 一统天下
    fractal314
        10
    fractal314  
       2015-12-04 23:01:44 +08:00 via Android
    感觉 node 适合做逻辑简单,访问量高的接口。异步回调,一层套一层,想想就发怵
    dorentus
        11
    dorentus  
       2015-12-05 00:00:44 +08:00 via iPhone
    PHP 我用过很多年, node.js 则是在比较早期的时候写过几个小的线上项目。
    现在如果要写正经的 web 项目的话,我会选 Ruby XD
    edsgerlin
        12
    edsgerlin  
       2015-12-05 00:40:04 +08:00
    @fractal314 如果是写 WebSocket ,目前真没发现比 Node 更好用的,两边能用同一套 API 呀……
    sox
        13
    sox  
       2015-12-05 02:01:58 +08:00 via Android
    不是可能,就是。
    joyee
        14
    joyee  
       2015-12-05 02:15:04 +08:00
    @fractal314 2015 年了还在用嵌套回调写 node ,说明知识范围太狭窄了,还是别再写的好……
    mzer0
        15
    mzer0  
       2015-12-05 02:29:18 +08:00
    @joyee 那你用什么...
    hustlzp
        16
    hustlzp  
       2015-12-05 02:33:07 +08:00
    @joyee 同意,比如 promise 、 yield 、 async/await
    joyee
        17
    joyee  
       2015-12-05 02:44:07 +08:00
    @mzer0 楼上。
    mzer0
        18
    mzer0  
       2015-12-05 02:50:57 +08:00
    @joyee 嵌套回调的编程模型比较简单, yield 的相对复杂.
    joyee
        19
    joyee  
       2015-12-05 02:57:18 +08:00
    @mzer0 复杂的不是 yield ,是如果想要用 generator 来做异步需要加多的那一个 scheduler ,也就是说,你需要 async/await ,或者在没有实现之前,得有 co 这样的垫脚石……然而只要有了这些基础设施写起来就跟写同步差不多了=___=(嵌套回调哪里简单了……“一层套一层,想想就发怵” 2333
    mzer0
        20
    mzer0  
       2015-12-05 03:01:13 +08:00
    @joyee 我不使用 Node.JS, 它实现了 yield 之类的吗? coroutine 呢? 打算在未来的半年内学习 Node.JS. 嵌套回调是最简单的啦, 并且很可靠, 只是传参不方便. 一些著名的 C++网络编程的库的文档里, 还会出现七层嵌套, 标准用法.
    fractal314
        21
    fractal314  
       2015-12-05 07:01:34 +08:00 via Android
    @joyee
    看来这位兄台是搞了许多年 node 的高手了。
    我这样的菜鸟,嵌套写不下去了,才明白为啥叫回调陷阱。估计现在解决这个问题的各种方案比较多了吧。
    当初,我把主要模块,都写成 Express 的中间件了,还好当时的问题不太复杂
    rekey
        22
    rekey  
       2015-12-05 11:02:47 +08:00
    php 果然还是最好的语言。
    newghost
        23
    newghost  
       2015-12-05 17:00:54 +08:00
    前后端工作量差不多的话还是用一种语言顺手……
    yunba
        24
    yunba  
       2015-12-05 18:26:21 +08:00
    php 是最好的语言
    joyee
        25
    joyee  
       2015-12-06 05:47:23 +08:00
    @mzer0 yield 不是 Node.js 里的东西啊,是 JavaScript 里的,语言层面上的,在 ES2015 里被标准化,需要引擎支持,而 V8 已经支持了,然后基于 V8 的 Node.js 也自然就支持了(以前需要开 flag ,现在 Node.js 和 io.js 合并之后不需要开 flag 就能使用)。
    joyee
        26
    joyee  
       2015-12-06 05:58:58 +08:00
    @fractal314 Express 是基于 Connect 的,用的是类似 CPS 的方法解决回调的问题,属于在引擎没有太多特性支持的时候,编程上的 trick 。 Promise 也是类似的 trick ,所以不需要 JS 引擎的支持,用起来就能改变你代码的形状。

    yield (或者说 generator )这种涉及上下文切换的特性,则是需要引擎支持的,但是这个也是很早 V8 就支持的,虽然要打开 flag ,然后现在 ES2015 已经定稿了, Node.js 也和 io.js 合并紧跟最新的 V8 了,所以不开 flag 就能用……

    而 async/await 可以直接基于 generator 做实现,虽然 V8 还没有,不过用 co 这样的库可以直接达到类似的目的,只是一点点语法糖不同。

    所以总而言之, Node.js 里的回调嵌套问题,很早就有解决方案了啊…… Express 的继任者 Koa 是基于 generator+co 解决的嵌套问题,也是 2013 年就出现的,国外的不说,国内 Node.js 用得最广的阿里就是广泛使用 Koa 的,也有员工是 Koa 的 contributor 比如双十一天猫 Node.js 的负责人 dead-horse ……( https://github.com/koajs/koa/graphs/contributors )(他今年双十一的 Node.js 应用分享在: https://github.com/tmallfe/tmallfe.github.io/issues/28 ,你看嵌套回调这种已经根本不是个事儿了提都不提……)
    joyee
        27
    joyee  
       2015-12-06 06:01:31 +08:00
    @fractal314 另外我不是男的,且我也没写 Node.js 多久啊……起码我刚学的时候就知道了 Koa 的存在,所以从来没觉得嵌套回调是什么问题,因为……干嘛要写嵌套回调啊?(除了某些逗比库只有嵌套的 API 需要你先自行封装一下)= =
    fractal314
        28
    fractal314  
       2015-12-06 08:50:16 +08:00 via Android
    @joyee 好吧,我当初 js 都没学,直接搞的 node ,一路填了许多坑,估计最后也没把握他的精髓吧。另,你的四级成绩可把我吓跪了
    mzer0
        29
    mzer0  
       2015-12-06 12:50:16 +08:00 via iPhone
    @joyee 我觉得嵌套回调很好......没什么坏处......
    spacewander
        30
    spacewander  
       2015-12-06 14:21:03 +08:00
    @mzer0
    你需要找一个五层以上的嵌套回调,然后试着理解它
    magicdawn
        31
    magicdawn  
       2015-12-06 15:29:00 +08:00
    如果你对 Node.js 的认识停留在 callback hell, 那就真是了解不多, 也就不要拿这个 hell 说事~
    mzer0
        32
    mzer0  
       2015-12-06 19:33:33 +08:00 via iPhone
    @spacewander 还是可以理解的,特别是有 lambda 编程经验的朋友。
    loginv2
        33
    loginv2  
       2015-12-08 17:12:02 +08:00
    )))))))))))))))
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3590 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 106ms · UTC 11:12 · PVG 19:12 · LAX 03:12 · JFK 06:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.