求助,嵌入式设备内嵌一个 web app,用什么前端框架合适? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
mingff258
V2EX    Javascript

求助,嵌入式设备内嵌一个 web app,用什么前端框架合适?

  •  
  •   mingff258 2016-12-12 14:22:07 +08:00 7339 次点击
    这是一个创建于 3229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    支持 PC 访问类似于 TPLINK 等路由器的配置界面,需要查看数据、查看简单图表。 看了下貌似有很多方案, React 、 Vue 、 Angularjs , JQuery 等等,头大…… 只会基础的 Html 和 Javascript ,哪个容易上手? 资源放在嵌入式设备里面,所以追求轻量化,最好能兼顾移动端的

    27 条回复    2016-12-13 18:47:12 +08:00
    wobuhuicode
        1
    wobuhuicode  
       2016-12-12 14:39:00 +08:00
    刚毕业的时候做过路由器的控制界面,用 JQ + bootstrap 三天交货。图标用 chart.js 。不过那时候还没有什么鬼 react/vue 的东西。感觉如果新手的话, JQ 还是比较友好的,兼容性也说得过去
    ZOwl
        2
    ZOwl  
       2016-12-12 14:42:36 +08:00
    轻量化的还是选择 Vue 好一些,兼顾移动端,可以参考这个: http://getvum.com/
    Miy4mori
        3
    Miy4mori  
       2016-12-12 14:47:56 +08:00 via Android
    java 写的多的话 ng2 好上手,看文档 vue 也很好上手, react 不想多说,坑多,当然,最快最简单的还是 jq ,毕竟不折腾
    southwolf
        4
    southwolf  
       2016-12-12 14:57:00 +08:00
    直接套个 bootstrap 现成模板完事
    Ahri
        5
    Ahri  
       2016-12-12 15:21:18 +08:00
    React 门槛高,不想入坑不推荐。你这种用传统的后端渲染就行了吧。
    earnshare
        6
    learnshare  
       2016-12-12 15:32:17 +08:00
    有一点很重要,代码量一定要小,小,小。

    我记得之前做路由器的时候,只有几百 K 的存储;
    而且静态资源传输也会影响路由器性能吧。

    另一个难题是路由器没有 HTTP API (自己定制开发就另说了),所以一般是后端程序直接驱动 Web 内容(连渲染模板都算不上)。

    简单点,精简的 Bootstrap css + jqLite 如何?
    Shazoo
        7
    Shazoo  
       2016-12-12 16:17:32 +08:00
    嵌入式设备其实无需太多在意前端框架的量级。

    因为,即使使用 gohead 、 boa 之类的嵌入式 web server ,对前端来说,也几乎是透明。

    只要控制好,不需要加载过多文件就好了。

    举个例子,你页面里面有 1 个图片,一个很重的 jQuery ,对嵌入式设备来说,开销其实要比 10 个图片,一个轻量级的 vue 来的省。


    另,欢迎来到 C++写 CGI 的世界~~~呵呵
    q397064399
        8
    q397064399  
       2016-12-12 16:56:30 +08:00
    jquery 吧,发布后反正也没打算更新了,
    而且用户更新路由器软件的机会很小,自动更新会导致断网等情况,客户肯定是不愿意看到的
    q397064399
        9
    q397064399  
       2016-12-12 16:57:06 +08:00
    @Shazoo 一般都是 lua 吧,谁会脚本程序也脑残到用 C++ 不是作死么?
    aleen42
        10
    aleen42  
       2016-12-12 16:59:48 +08:00
    都既然是嵌入式系统的 app , 你还引用框架= =。选型之前要考虑,你的嵌入式设备能消耗不?不然,就会得不偿失。
    q397064399
        11
    q397064399  
       2016-12-12 17:01:07 +08:00
    @learnshare 现在一般是 8M flash 起步吧, 16M 也不贵,而且 容量越大 软件开发的成本越低,毕竟可以上 linux 了,开源一大抄
    倒是一些存储空间不能看的路由器 用的 VxWorks 简直要吐血
    q397064399
        12
    q397064399  
       2016-12-12 17:01:35 +08:00
    @aleen42 不消耗,渲染都是浏览器完成,路由器只负责数据跟文件
    lalalakakaka
        13
    lalalakakaka  
       2016-12-12 17:08:33 +08:00
    参考 openwrt 后台

    用 bootstrap+jQ
    kohos
        14
    kohos  
       2016-12-12 17:09:15 +08:00
    如果觉得 jQuery 文太大( 84K )可以换 Zepto ( 9.6K ),用法和 jQuery 一样
    mingff258
        15
    mingff258  
    OP
       2016-12-13 08:53:19 +08:00
    @learnshare 我用 C++基于 http_parser 写了个简单的 HTTP Server ,用起来倒是够用
    mingff258
        16
    mingff258  
    OP
       2016-12-13 09:02:30 +08:00
    @Shazoo 百度了下 CGI ,第一次听说这名词……确实是用 C++写了个 HTTP Server ,然后对外提供 json 格式的数据,方便客户端获取数据
    mingff258
        17
    mingff258  
    OP
       2016-12-13 09:06:20 +08:00
    看大家的回复,看来 bootstrap + jQuery 组合推荐较多,这下有重点了,哈哈
    mingff258
        18
    mingff258  
    OP
       2016-12-13 09:10:39 +08:00
    @aleen42 引用框架写得快嘛,而且成熟的方案美观易用。我的设备只是存储静态文件,然后发给浏览器执行
    mingff258
        19
    mingff258  
    OP
       2016-12-13 09:14:59 +08:00
    @Ahri 后端渲染,也是第一次听说,原谅我前端知识的匮乏……我的情况应该是属于前端渲染,设备只存静态文件,浏览器请求文件后负责后续的任务。
    aleen42
        20
    aleen42  
       2016-12-13 09:21:40 +08:00
    @mingff258 嗯。其实我觉得不需要引用,一来省地方,二来页面应该不会有太复杂的逻辑
    mingff258
        21
    mingff258  
    OP
       2016-12-13 09:22:12 +08:00
    @q397064399 现在弄了块样板 128M nand flash , ARM+Linux ,但后续出于成本考虑可能会砍掉变小。空间不足的情况确实很头疼,之前有个要求把 16M falsh 弄成 8M ,然后各种砍砍砍,搞得要吐血。
    learnshare
        22
    learnshare  
       2016-12-13 10:53:14 +08:00
    @mingff258 根据实际的存储空间要求, Bootstrap 和 jQuery 也可以做必要的精简
    Shazoo
        23
    Shazoo  
       2016-12-13 11:47:01 +08:00
    @q397064399 嵌入式设备使用 C/C++写 CGI 是很常见的。脑残这词可不对哈。举个例子,很多 CM3 、 CM4 的控制台都是 web service 。一般都是用 C/C++来实现 CGI 的。

    @mingff258 个人经验推荐 boa ,这个写 cgi 会比较简单。量级也很轻。 gohead 也不错,可以试试。

    线程安全很重要,小心些哈。
    Ahri
        24
    Ahri  
       2016-12-13 13:17:03 +08:00
    @mingff258 没太懂,你前端数据从哪里读?
    mingff258
        25
    mingff258  
    OP
       2016-12-13 14:52:27 +08:00
    @learnshare 好的,我先学下这两个框架

    @Shazoo 看了下 BOA 好像好久没更新了,但简单轻量; gohead ,应该是 goAhead ,比较新,功能也比较全,也会大一点。当初怎么都没发现……刚开始的时候脑子一热,入了 libuv 的坑,然后想反正都入坑了,自己再干脆写个合适的 HTTP Server 算了,于是……已经遇到过线程死锁的问题了,还好解决了。目前还凑合,已经写了个配套的 Android APP 用着。但缺了 PC 上面的客户端,于是就想通过 Web APP 来实现,省去了安装过程,还有跨平台的优势。

    @Ahri 发给浏览器的数据还是来自设备,只不过都是 json 纯数据,第一次请求静态文件后就不再包含 html 等界面代码
    q397064399
        26
    q397064399  
       2016-12-13 18:45:53 +08:00 via iPhone
    @Shazoo sorry 用词不当了,
    只是很多场景 像 openwrt 都是 lua 做 http 应用的
    q397064399
        27
    q397064399  
       2016-12-13 18:47:12 +08:00 via iPhone
    @mingff258 如果是路由,建议直接从 op 改,不过 op 这么多年 确实不好改
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3389 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 00:39 PVG 08:39 LAX 17:39 JFK 20:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86