利用 Bootstrap 也可以开发桌面了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
calidion
V2EX    Node.js

利用 Bootstrap 也可以开发桌面了

  •  
  •   calidion 2016-07-31 23:04:04 +08:00 5663 次点击
    这是一个创建于 3361 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文:

    http://mp.weixin.qq.com/s?__biz=MzA4MTM5ODM3MA==&mid=2649868233&idx=1&sn=14886c4697b926a57b2811b51c86da0a#rd

    HTML 一直是桌面软件的重点,各种桌面软件或者多或少都会嵌入一些 HTML 的代码。而自从在了 Nodejs 后,使用 HTML 制作桌面就成为了可能。 这要感谢 node-webkit 引入了对桌面的支持,然后 electron 推动了这个趋势。 由于 node-webkit 的支持力度似乎不够大,而 electron 已经有相应的比较成熟的产品 Atom/VSCode ,所以我倾向了 electron. 今天我要介绍如何使用 electron 与 bootsrap 做一个桌面的应用。

    安装 Electron

    Electron 的安装是很方便的

    npm install -g electron-prebuilt 

    如果你是在中国大陆的用户,那么你可能需要添加一个环境变量,执行命令变成是:

    ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ npm install -g electron-prebuilt 

    通常对于一个资深的开发人员来说,翻译是必备的技能,关于如何翻墙,可以参考公共号文章:你所必须了解的翻墙工具。 一般通常直接翻墙安装就可以了。但是考虑到网速的问题,大陆的用户还是使用淘宝镜像会比较慢。

    当你安装完成后,输入命令:

    electron --help 

    得到

    Electron 1.3.1 - Build cross platform desktop apps with Javascript, HTML, and CSS Usage: electron [options] [path] A path to an Electron app may be specified. The path must be one of the following: - index.js file. - Folder containing a package.json file. - Folder containing an index.js file. - .html/.htm file. - http://, https://, or file:// URL. Options: -h, --help Print this usage message. -i, --interactive Open a REPL to the main process. -r, --require Module to preload (option can be repeated) -v, --version Print the version. --abi Print the application binary interface. 

    这表示我们的 electron 已经安装完成了。

    初试牛刀: Hello Electron!

    上面的提示告诉我们:

    electron 后面可以接.js 也可以接.html

    所以我们任意创建一个 a.html 页面:

    <!DOCTYPE html> <html> <body> <h1> Hello Electron! </h1> </body> </html> 

    然后打入:

    electron a.html 

    出现如下的图片:

    这是最简单的办法,但是控制力量不够,也不方便加入初始化的代码,所以我们通常会偏向于选择使用.js 文件作为入进点。

    官方做法

    官方提供了做为进入点的 Demo:

    # Clone the Quick Start repository $ git clone https://github.com/electron/electron-quick-start # Go into the repository $ cd electron-quick-start # Install the dependencies and run $ npm install && npm start 

    这个时候就会出现一个窗口:

    这样我们就完成了一个最基本的 electron 框架。 这个框架的目录结构是这样的:

    . ├── index.html ├── LICENSE.md ├── main.js ├── package.json ├── README.md └── renderer.js 

    添加 bootstrap

    前面我们已经将 electron 的示例项目安装完成,下面我们来安装 bootstrap.

    bootstrap 其实是前端的 UI 框架,但是 electron 已经将前后端模糊了。 所以在 electron 里,前端与后端是可以共存的。 即 nodejs 后端与浏览器前端已经融合在一起了。 所有的 js 代码即可以运行于浏览器,也同样可以运行于 nodejs 。

    安装 bootstrap

    但是我们在这里还是用到了前端的工具 bower ,执行

    bower install bootstrap 

    下载 bootstrap 代码。

    如果没有安装 bower 的话,执行一下:

    npm install -g bower 

    先安装 bower

    执行成功后,就会多出来一个目录 bower_components,结构如下:

    bower_components/ ├── bootstrap/ └── jquery/ 

    这时表示我们的 bootstrap 下载成功。

    引入 bootstrap

    现在我们就将 bootstrap 引入到我们的项目中来。

     <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" crossorigin="anonymous"> 

    注意 href 的路径,就是 bower 安装的包的目标目录。 由于我们暂时不需要动态功能,所以可以不添加 bootstrap 的 js 文件。

    添加新代码

    现在我们已经将 bootstrap 的 CSS 添加进来了,下面我们放上组件进行测试一下。 添加代码如下。

     <div class="text-center"> <button type="button" class="btn btn-default">Default</button> <button type="button" class="btn btn-primary">Primary</button> </div> 

    再运行:

    npm start 

    得到如下结果:

    这里我们看到了 bootstrap 的按钮, 表示我们的桌面版的 bootstrap 已经调用成功了!!!

    下面你就可以随意的添加各个 Bootstrap 组件来编写你的 electron 桌面应用了。

    是不是很简单呢?
    赶紧试一下吧,也许下一个 google 就属于你的了。

    欢迎微信公共号:frontend-guru 了解更多的信息,或者扫描二维码:

    74 条回复    2016-09-26 15:43:07 +08:00
    Vanilla
        1
    Vanilla  
       2016-07-31 23:09:54 +08:00   5
    这不主要说的是 Electron 么,和 Bootstrap 有很大关系吗
    calidion
        2
    calidion  
    OP
       2016-07-31 23:18:59 +08:00
    @Vanilla

    两个都是主要的。
    大多数人都接触并熟悉 Bootstrap 。
    如果使用 Electron ,可以优先考虑基于 Bootstrap 创作桌面。
    同时 Bootstrap 作为 UI 框架也是很成熟的,个人比较推荐。
    SourceMan
        3
    SourceMan  
       2016-07-31 23:19:43 +08:00 via iPhone
    @Vanilla 主要是说公众号
    DoraJDJ
        4
    DoraJDJ  
       2016-07-31 23:22:38 +08:00 via Android
    @Vanilla 一看到开始的 electron 马上就知道结局了,直接飞奔评论。
    calidion
        5
    calidion  
    OP
       2016-07-31 23:24:38 +08:00
    @DoraJDJ 科普:)
    @SourceMan 都重要,都重要:)
    menc
        6
    menc  
       2016-07-31 23:25:22 +08:00   1
    确实,你这样写, electron 很不开心
    zhujinliang
        7
    zhujinliang  
       2016-08-01 00:09:34 +08:00 via iPhone   4
    利用 leftpad 也可以开发桌面了
    Perry
        8
    Perry  
       2016-08-01 00:12:05 +08:00
    真的不算桌面应用,还是在浏览器里面啊
    WittBulter
        9
    WittBulter  
       2016-08-01 00:14:31 +08:00
    吃相太难看 block
    viko16
        10
    viko16  
       2016-08-01 00:44:31 +08:00 via Android
    倒是开发个“桌面”来看看哦…
    superalsrk
        11
    superalsrk  
       2016-08-01 00:59:53 +08:00
    歧义太大了
    calidion
        12
    calidion  
    OP
       2016-08-01 01:02:12 +08:00
    @superalsrk

    标题没起好。呵呵。
    Ahri
        13
    Ahri  
       2016-08-01 05:34:10 +08:00
    “大多数人都接触并熟悉 Bootstrap 。”是统计过还是看看周围小圈子还是拍脑袋?
    calidion
        14
    calidion  
    OP
       2016-08-01 05:46:03 +08:00
    Ahri
        15
    Ahri  
       2016-08-01 06:12:34 +08:00
    楼主 Google Trends 比较的关键词是:

    bootstrap
    atom shell
    github atom
    electron

    高!实在是高!
    calidion
        16
    calidion  
    OP
       2016-08-01 07:02:55 +08:00
    @Ahri

    应该用什么呢?求高人提点。
    mzsongyan
        17
    mzsongyan  
       2016-08-01 07:03:26 +08:00 via Android
    图片呢,还有最后的二维码呢,不专业啊
    calidion
        18
    calidion  
    OP
       2016-08-01 07:05:31 +08:00
    @mzsongyan

    还不会弄图片,原文上有图片。
    Symars
        19
    Symars  
       2016-08-01 07:49:27 +08:00 via iPhone
    这个还是要浏览器支撑 还不是纯粹的桌面应用
    murmur
        20
    murmur  
       2016-08-01 07:49:48 +08:00
    electron 这个打包这么大 还是.net
    warDoggie
        21
    warDoggie  
       2016-08-01 08:21:19 +08:00
    即不桌面,也不应用。这样写 bootstrap 很不开心+ 1
    iTakeo
        22
    iTakeo  
       2016-08-01 08:32:52 +08:00 via iPhone
    这跟 bootstrap 关系真不大
    Vanilla
        23
    Vanilla  
       2016-08-01 09:18:16 +08:00
    @calidion Google trend 说明不了什么

    https://www.google.com/trends/explore#q=bootstrap%2C%20semantic%20ui%2C%20foundation%2C%20Skeleton&cmpt=q&tz=Etc%2FGMT-8

    像 foundation 这种名字框架还不占够了便宜

    bower 也是一个已经死了的项目,还在这里推荐看不到意义

    对了, Bootstrap 不是给后端用的么? :)
    Shura
        24
    Shura  
       2016-08-01 09:21:17 +08:00 via Android
    有啥用呢?能调用 win32 API 吗?
    qiutc
        25
    qiutc  
       2016-08-01 09:51:11 +08:00
    秀智商?
    Tankpt
        26
    Tankpt  
       2016-08-01 09:56:00 +08:00
    跟 bootstrap 。。。没关系吧。。
    xcodebuild
        27
    xcodebuild  
       2016-08-01 09:56:54 +08:00
    和 bootstrap 没啥关系。。和桌面也没啥关系。。
    amlun
        28
    amlun  
       2016-08-01 09:59:55 +08:00
    捉急~
    aitaii
        29
    aitaii  
       2016-08-01 10:01:30 +08:00
    感觉说了很多,很想看图片啊,图片在哪。。。
    whahuzhihao
        30
    whahuzhihao  
       2016-08-01 10:42:36 +08:00
    @codefalling 强行没关系
    huntererer
        31
    huntererer  
       2016-08-01 10:45:08 +08:00
    标题党。。。
    xcodebuild
        32
    xcodebuild  
       2016-08-01 10:50:51 +08:00
    @whahuzhihao 有啥关系么。。。完全是 electron 的事情,桌面应用就桌面应用,,写桌面是个什么鬼。。
    Navee
        33
    Navee  
       2016-08-01 12:41:35 +08:00
    有些人总想用标题搞点大新闻
    zhangdawei
        34
    zhangdawei  
       2016-08-01 12:43:36 +08:00
    标题党
    learnshare
        35
    learnshare  
       2016-08-01 12:50:15 +08:00
    跟 Bootstrap 没有什么关系
    coderluan
        36
    coderluan  
       2016-08-01 14:27:52 +08:00
    实话实说感觉很麻烦,和 nw.js 相比有什么优势?
    calidion
        37
    calidion  
    OP
       2016-08-01 14:34:34 +08:00
    其实文章本来就是写给会使用 Bootstrap 的开发者的。
    跟 Bootstrap 怎么会没有关系呢?
    为什么必须说是 Electron?
    下次写的是 Bootstrap 运行在 NW 上呢?
    这不就跟 Electron 没有任何关系了吗?

    所以上面的很多喷子们还是没有搞清楚问题的实质。

    标题的问题在于少打了应用两字。
    jarlyyn
        38
    jarlyyn  
       2016-08-01 14:44:07 +08:00
    居然还说别人喷子。

    这年头真是什么人都想学推广了啊。
    calidion
        39
    calidion  
    OP
       2016-08-01 14:55:21 +08:00
    这年头,猴子也会打字了:)
    daysv
        40
    daysv  
       2016-08-01 15:10:35 +08:00
    我觉得这主题不太对.
    另外 electron 不支持 XP 对产品来说是大忌.
    所以我用 nw
    duian
        41
    duian  
       2016-08-01 15:32:31 +08:00
    你这么标题党, 你妈妈知道么
    zhqy
        42
    zhqy  
       2016-08-01 16:07:46 +08:00
    bootstrap 其实是前端的 UI 框架,但是 electron 已经将前后端模糊了。 所以在 electron 里,前端与后端是可以共存的。 即 nodejs 后端与浏览器前端已经融合在一起了。 所有的 js 代码即可以运行于浏览器,也同样可以运行于 nodejs 。

    噗,这段我都笑出声了。
    calidion
        43
    calidion  
    OP
       2016-08-01 16:26:12 +08:00
    @zhqy

    你笑了,我也笑了。笑点似乎不同?
    aristotll
        44
    aristotll  
       2016-08-01 19:30:10 +08:00
    r#43 @calidion 没看出笑点, 求指教一二
    zapper
        45
    zapper  
       2016-08-01 19:49:24 +08:00
    大约前端的确快统一世界了
    calidion
        46
    calidion  
    OP
       2016-08-01 20:04:56 +08:00
    @aristotll

    如果你不跟他一样能找到笑点,那你肯定也不理解我的笑点了。


    @zapper

    前后端融合很厉害。也就是 Web 技术已经深入到田间地头了。
    dphdjy
        47
    dphdjy  
       2016-08-01 20:13:23 +08:00 via Android
    最近 v2 冷饭好多。。。
    exoticknight
        48
    exoticknight  
       2016-08-01 20:26:27 +08:00
    我穿越了?
    Ahri
        49
    Ahri  
       2016-08-01 22:11:07 +08:00
    其实文章本来就是写给会使用 HTML 的开发者的。
    跟 HTML 怎么会没有关系呢?
    为什么必须说是 Bootstrap?
    下次写的是 Semantic UI 呢?
    这不就跟 Bootstrap 没有任何关系了吗?

    所以上面的很多喷子们还是没有搞清楚问题的实质。
    yoa1q7y
        50
    yoa1q7y  
       2016-08-01 22:15:03 +08:00
    这帖子就是来找骂的。。
    calidion
        51
    calidion  
    OP
       2016-08-01 22:52:56 +08:00
    @yoa1q7y

    至少没看到有人可以象样的骂起来。
    如果真有什么的错误,我想这些喷子们也发现不了。

    @viko16

    开发桌面又有什么不能?
    开发一个类似于 GNOME 的桌面也未偿不行。
    并没有什么不行的,你不行不代表别人也不行。
    只有什么都不懂的人才会发现不了可能性。

    就跟几年前一群喷子认为 js 无法开发后台一样。
    喷也麻烦喷的有水平点。谢谢合作。
    Kilerd
        52
    Kilerd  
       2016-08-01 22:56:14 +08:00
    除了呵呵,还能 Block

    讲道理,几个概念都没搞清楚,就学人写这种文章???

    严重标题党。 “利用 CSS 也可以开发桌面应用了!!!”

    微信公众号宣传贴!!!
    calidion
        53
    calidion  
    OP
       2016-08-01 23:03:08 +08:00
    @Kilerd

    关键是你有没有道理呢?
    bootstrap 包括 HTML+CSS+JS 。
    所以能基于 Bootstrap 的地方一定可以基于 HTML5+CSS+JS 。
    所以相当于利用 HTML+CSS+JS 开发桌面应用。
    所以有什么问题吗?

    你的 CSS 呢?

    呵呵。你的道理从那里来?

    希望你还是屏掉我吧。

    我伺候不了你这样的。
    viko16
        54
    viko16  
       2016-08-01 23:22:35 +08:00 via Android
    @calidion

    别扯开话题,倒是用 Bootstrap 开发个“类似于 GNOME 的桌面”来看看哦…
    Ahri
        55
    Ahri  
       2016-08-01 23:24:17 +08:00
    散了散了。 The OP is completely clueless.
    calidion
        56
    calidion  
    OP
       2016-08-01 23:34:20 +08:00
    @viko16

    果然喷子理解不了我说的话的意思:)
    calidion
        57
    calidion  
    OP
       2016-08-01 23:35:06 +08:00
    @viko16

    看来 Android 桌面也没有玩过啊。
    fliu2476
        58
    fliu2476  
       2016-08-02 00:35:25 +08:00 via iPhone
    发图 markdown
    calidion
        59
    calidion  
    OP
       2016-08-02 01:04:42 +08:00
    有意思。这帖子被屏了。
    williamx
        60
    williamx  
       2016-08-02 06:54:11 +08:00
    我觉得不错啊,正想涉足这一块。
    不用理他们!
    hrong
        61
    hrong  
       2016-08-02 07:49:32 +08:00 via Android
    标题,标题,还是标题!重要的事说三遍
    techme
        62
    techme  
       2016-08-02 08:54:47 +08:00
    ljcarsenal
        63
    ljcarsenal  
       2016-08-02 10:16:36 +08:00
    怎么知道帖子被屏蔽了么有
    ayaseangle
        64
    ayaseangle  
       2016-08-02 10:34:21 +08:00
    傻逼标题党。。
    msg7086
        65
    msg7086  
       2016-08-02 11:23:13 +08:00
    本站都是喷子,楼主你来本站发帖你是抖 M 吧。
    赶紧右上角点击登出按钮,并将本站移出收藏夹,从此远离我们这样的喷子。

    多谢。
    whahuzhihao
        66
    whahuzhihao  
       2016-08-02 11:35:36 +08:00   1
    喷子实在太多,要说标题有问题,也就是没区别桌面和桌面应用。
    在 node 区看到这个标题第一眼就知道是 electron 或者 nw ,很多人反正进来先喷一遍。
    calidion
        67
    calidion  
    OP
       2016-08-02 16:38:54 +08:00
    @ljcarsenal

    对比啊。你没登录,就打不开了。
    而别的帖子是可以打开的。
    calidion
        68
    calidion  
    OP
       2016-08-02 16:47:27 +08:00
    @whahuzhihao

    其实开发桌面也是可以的。
    只是 BootStrap 只是负责 UI 。
    刚好给我提了个醒,我以后可以直接使用 HTML 给自己开发一个桌面。
    VmuTargh
        69
    VmuTargh  
       2016-08-02 22:19:40 +08:00
    @calidion electron 写 UI ?您就自己卡去吧。举一个例子: Vivaldi 的 UI 全部用 node.js 建构,跑在一个 blink 的 frame 里面,结果占用比 chrome 还恐怖,甚至出现过调试浏览器 UI 本身的恶俗事件。
    VmuTargh
        70
    VmuTargh  
       2016-08-02 22:21:39 +08:00
    @VmuTargh 纠正一下 “ electron 写 UI ?”> “ electron 写 DE?"
    VmuTargh
        71
    VmuTargh  
       2016-08-02 22:22:36 +08:00
    @Kilerd CSS 写个主题还是可以的(逃
    lq007
        72
    lq007  
       2016-08-03 08:46:18 +08:00
    照楼主的逻辑其实可以说成 jquery 也可以开发桌面、 seajs 也可以开发桌面等等,楼主阿, bootstrap 只是一个 UI 框架,在你说的技术栈里 html-bootstrap-electron electon 是关键,什么叫关键?去掉 bootstrap ,这个桌面应用还是能出来,你去掉 electron ,就只能是个网站了。所以你的标题是很不妥滴。
    errorlife
        73
    errorlife  
       2016-09-26 15:42:32 +08:00
    你好。图片都挂了
    errorlife
        74
    errorlife  
       2016-09-26 15:43:07 +08:00
    @errorlife 所以我去微信公众号看,不用在意。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1065 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:03 PVG 07:03 LAX 16:03 JFK 19:03
    Do have faith in what you're doing.
    ubao 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