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

各位老哥,传统 PHP 电商网站, JS 部分如何实现模块化?

  •  
  •   batyu · 2020-06-18 17:05:53 +08:00 · 2895 次点击
    这是一个创建于 1400 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在的架构是 laravel+jquery+bootstrap,JS 的代码维护起来有点蛋疼,怎么改造成模块化的方式?

    seajs 已经很久不更新了,没有太多选用的想法。

    requirejs 情况也差不多,除了这两个外,还有其他方案吗

    29 条回复    2020-06-19 12:10:20 +08:00
    batyu
        1
    batyu  
    OP
       2020-06-18 17:07:45 +08:00
    补充一下,页面用的 laravel 内置的 blade 模板引擎
    chenz197
        2
    chenz197  
       2020-06-18 17:07:58 +08:00
    你们是套模板开发吗..
    chenz197
        3
    chenz197  
       2020-06-18 17:08:47 +08:00
    blade.. 之前一家公司也是用这个 很尴尬
    batyu
        4
    batyu  
    OP
       2020-06-18 17:08:51 +08:00
    @chenz197 不是,用的 laravel 框架,东西都自己写的
    mlxj
        5
    mlxj  
       2020-06-18 17:09:32 +08:00
    重构
    TangMonk
        6
    TangMonk  
       2020-06-18 17:09:49 +08:00
    用 browserify + gulp 可以试试
    batyu
        7
    batyu  
    OP
       2020-06-18 17:11:54 +08:00
    @mlxj 是想着重构,目前人员不够,vue 或者 react 不好做 SEO,这种传统架构应该如何实现前端模块化呢
    batyu
        8
    batyu  
    OP
       2020-06-18 17:12:48 +08:00
    @TangMonk 感谢,我去看看可行性
    wangyzj
        9
    wangyzj  
       2020-06-18 17:18:49 +08:00
    一定要动吗?
    jquery 挺好的
    batyu
        10
    batyu  
    OP
       2020-06-18 17:23:13 +08:00
    @wangyzj 没打算弃用 JQUERY,只是想着能不能基于 JQUERY 来做模块化。平台实现了两套购物逻辑:登录状态和未登录状态,很多代码都混在一起,挺乱的,维护起来也别扭
    galikeoy
        11
    galikeoy  
       2020-06-18 17:24:26 +08:00
    @TangMonk 打包的 bundle 不会太大吗,requirejs 现在没必要更新了吧
    batyu
        12
    batyu  
    OP
       2020-06-18 17:26:33 +08:00
    @galikeoy 没有用过 requirejs,所以暂时作为备选,如果最终没有更好的方案,应该就用它了
    baxtergu
        13
    baxtergu  
       2020-06-18 17:38:12 +08:00
    引入 requirejs+backbone+handlebars 模板做模块化改造成本小一点,但是要看原先的数据渲染是放在服务端做的还是前端做的,要是服务端做的话改造还是比较大
    batyu
        14
    batyu  
    OP
       2020-06-18 17:44:36 +08:00
    @baxtergu 这是走前后端分离的路子了吧?目前是服务端渲染的,确实改造太大
    baxtergu
        15
    baxtergu  
       2020-06-18 17:52:48 +08:00
    @batyu 是的,可能也就是技术栈相近一点改造成本没那么高。或者也可以试试新框架做渐进式的改造,慢慢改,这点上面 vue 做的比 react 好。
    coderabbit
        16
    coderabbit  
       2020-06-18 17:54:00 +08:00
    体量不大放弃 pc 端吧。维护也累!
    zjsxwc
        17
    zjsxwc  
       2020-06-18 17:54:04 +08:00 via Android
    requirejs 吧,至少 npm 包都兼容 amd 所以可以直接拿来用
    lneoi
        18
    lneoi  
       2020-06-18 17:56:35 +08:00
    后端渲染 模块化不就是由后端负责,输出时判断一下选择性输出就行了?
    TangMonk
        19
    TangMonk  
       2020-06-18 18:02:02 +08:00
    @galikeoy #11 不会很大啊
    jinwyp
        20
    jinwyp  
       2020-06-18 18:44:15 +08:00
    看了以下日期 是 2020 年, 直接用 es6 的模块啊,webpack 打包 可以不用 vue react 没问题啊
    ccraohng
        21
    ccraohng  
       2020-06-18 19:07:38 +08:00 via Android
    wrbpack 多入口打包 资源信息注入
    batyu
        22
    batyu  
    OP
       2020-06-18 21:13:16 +08:00
    @lneoi 这样貌似更复杂化了

    @jinwyp
    @ccraohng 非前后端分离的项目,JS+PHP+PHP 模板引擎。也能引入 ES6 、webpack ?
    neutrino
        23
    neutrino  
       2020-06-19 08:22:57 +08:00 via Android
    webpack 是可以的,js src 那坨放在 resource 里,用 laravel mix 生成 public js img 等,然后在 blade 中用 asset 引入。最后每个模板文件的最后自己写页面特意的 js 就可以了。
    qq1340691923
        24
    qq1340691923  
       2020-06-19 09:10:04 +08:00
    上 nuxt 或者 nest 啊
    zhuweiyou
        25
    zhuweiyou  
       2020-06-19 09:35:48 +08:00
    system.js
    chenz197
        26
    chenz197  
       2020-06-19 09:46:52 +08:00
    我知道呀 就是 laravel , 按你描述的就是文件都是 xxx.blade.php 这种吧
    batyu
        27
    batyu  
    OP
       2020-06-19 10:30:34 +08:00
    @neutrino 这个只是用到 laravel mix 的混压缩吧,没有模块化的东西在里面

    @qq1340691923 服务端渲染……暂时还没打算动 PHP

    @zhuweiyou 感谢!这个第一次了解到,我去看看
    TimPeake
        28
    TimPeake  
       2020-06-19 11:13:20 +08:00
    其实 jq+require+backbone+其他任何 jqUI 框架 这种模式就挺好的 之前单位老项目 模块很好
    qq1340691923
        29
    qq1340691923  
       2020-06-19 12:10:20 +08:00
    nuxt,nest 就可以服务端渲染
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1350 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:43 · PVG 07:43 · LAX 16:43 · JFK 19:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.