前端打包成桌面应用、以及chrome扩展

前段时间在利用工作之余开发了tomato timer这个蕃茄钟,然后部署到github.io上,由于greatway太厉害,偶尔会有打不开的情况。上周末对比做了扩展和改进,使其成为chrome的插件,或者成为桌面app。

chrome插件的使用与开发

一、如何安装与使用:

1、下载tomato timer项目,github地址 https://github.com/cqhaibin/tomato-timer.git

2、切换到V2.0.0.0的tag,然后如下图所配置:

3、然后单击 “小飞”图标即可使用,界面如下图:

二、打包源码简单介绍

本chrome插件的实现思路:插件开发是通过vue、vuex等实现的;然后通过rollup打包成为一个独立的js文件(tomatoTimer.js);最后配置chrome插件的manifest.json文件即可。

1、如何通过rollup把vue项目独立打包成一个js文件,代码片段如下:

var VueLoader = require(‘rollup-plugin-vue‘);
var Resolve = require(‘rollup-plugin-node-resolve‘);
var Commonjs = require("rollup-plugin-commonjs");
var replace = require(‘rollup-plugin-replace‘);
var path = require(‘path‘);
var babel = require(‘rollup-plugin-babel‘);
var paths = require("./paths");
var rollup = require(‘rollup‘);
var type = process.env.TYPE;

let config = {
    entry: path.resolve(__dirname, paths[type].source),
    plugins: [VueLoader(), babel({
      exclude: ‘node_modules/**‘ // only transpile our source code
    }), Resolve({
    // pass custom options to the resolve plugin
    customResolveOptions: {
      moduleDirectory: ‘node_modules‘
    },
    jsnext: true,
    main: true,
    browser:true
  }), Commonjs(), replace({
    ‘process.env.NODE_ENV‘: JSON.stringify(‘development‘),
    ‘process.env.VUE_ENV‘: JSON.stringify(‘browser‘)
  })]
};
rollup.rollup(config).then(function(bundle){
    bundle.write({
        format: ‘iife‘,
        moduleName: "tomato",
        sourceMap: true,
        dest: path.resolve(__dirname, paths[type].dest)
    });
});

这里利用了rollup-plugin-replace插件替换vue中的一些配置,不加此插件在browser中运行时会报错。

2、对vue的引用需要注意,由于vue2.0开始,vue提供的文件分为runtime、compile等类型,所以要直接指定,如下代码所示:

import Vue from ‘vue/dist/vue.js‘;

此代码在项目的aloneindex.js文件中。

3. chrome插件的配置

{
    "manifest_version": 2,
    "name": "tomato timer",
    "version": "1.0.0.0",
    "description": "tomato timer",
    "icons": {
        "16": "icons/tomatotimer-16.png",
        "48": "icons/tomatotimer-48.png",
        "64": "icons/tomatotimer-64.png",
        "128": "icons/tomatotimer-128.png"
    },
    "author": "sam long",
    "permissions": [
        "tabs", //可访问tab
        "storage" //可以访问本地存储
    ],
    //右键单击右上角插件logo时,弹出的窗口
    "options_page": "view/options.html",
    //左键单击右上角插件logo时,弹出的窗口
    "browser_action": {
        "default_icon": {
            "38": "icons/tomatotimer-48.png"
        },
        //"default_popup": "view/popup.html",
        "default_title": "tomato timer"
    },
    //后台运行的js进程对象
    "background": {
        "scripts": ["background.js"],
        "persistent": false
    },
    "content_security_policy": "script-src ‘unsafe-eval‘; object-src ‘unsafe-eval‘"
}

此配置只是实现一个chrome插件的简单配置,更多配置可以参考baidu。其中较为重要为background节点的配置,因为他能响应chrome插件上的行为,如你单击浏览器地址栏旁边的图标事件就需在此文件中捕获。background.js代码如下:

chrome.browserAction.onClicked.addListener(function(tab) {
    var destUrl = ‘./index.html‘;
    chrome.tabs.create({ url: destUrl });
});

然后则是content_security_policy节点,他简称csp策略,默认chrome插件只会加同域下的安全文件夹下的js。所以此处要设置unsafe-eval。更多配置如下:

说明
self 同域(默认)
unsafe-inline 行内js可以执行
unsafe-eval 本地js文件可以执行
none  

4. 注意

1. browser_action中的default_popup有配置值时,chrome.browserAction.onClicked.addListener事件不会被触发

桌面App打包

一、此打包需要安装如下两个npm包:

electron:可将前端项目包装成为一个桌面app,并且他还提供了一系统的对操作系统的访问

electron-packager:发布桌面app

二、安装好后,对package.json文件进行如下配置

"name": "simple",
"version": "1.0.0",
"main": "electron/main.js",

这三个节点是必须的,且main会作为electron的入口文件。

三、运行.\node_modules\.bin\electron . 即可看到如下界面:

四、利用electron-packager打包,输入如下命令后,就等待他的完成吧。

.\node_modules\.bin\electron-packager . tomatoTimer --out ./outApp

时间: 2024-08-04 04:52:12

前端打包成桌面应用、以及chrome扩展的相关文章

用node-webkit把web应用打包成桌面应用

node-webkit是一个Chromium和node.js上的结合体,通过它我们可以把建立在chrome浏览器和node.js上的web应用打包成桌面应用,而且还可以跨平台的哦.很显然比起传统的桌面应用,在某些特定领域用html5+css3+js开发的web应用更加简单和高效,而且还可以使用node.js的功能,所以node-webkit还是很有用处的. 下面我通过一个简单的demo来介绍怎么样把一个web应用打包成一个可执行文件(这里只介绍windows环境) 首先新建一个index.htm

Electron把网页打包成桌面应用并进行源码加密

前言 最近想把自己用html+css+js做的网页界面打包成桌面应用,网上一搜,发现Electron是一个不错的选择,试了试,发现效果真的不错.这里记录一下打包过程以作记录,便于自己以后查看学习. 一.简介 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的. 二.打包过程 1.

展示触摸屏网页打包成桌面应用(nw.js)

一.编写触摸屏网页注意点 1.控制缩放行为.内容宽度为屏幕宽度,初始缩放比例为1:1,并禁止缩放(如若可放大缩小,影响操作体验) <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 2.<a>标签点击存在暗色透明背景问题,使用css属性 -webkit-tap-highlight-colo

推荐一个可以把网页背景色调成护眼色的Chrome扩展应用

程序员一天有10几个小时要面对着电脑,老是这种白晃晃的屏幕,谁的眼睛受得了? 我在网上逛了一圈,找到一个比较实用的Chrome扩展应用,可以一键实现将Chrome打开网页的背景色修改成护眼的豆沙绿,这样在网上浏览网页,眼睛舒服多了. 这个Chrome扩展应用的下载地址: http://chromecj.com/accessibility/2014-11/292.html 下载完毕后就是一个crx文件,如何安装呢? 按照下面图示的方式点击Chrome菜单: 然后直接把下载的crx文件拖到下面这个界

ThingsBoard 前端打包成 App 的方法

欢迎大家加入thingsboard 二次开发讨论群:121202538 ThingsBoard私有化部署之后,不免存在在手机上查看各仪表盘的需求.手机上虽然可以浏览器访问网址,但对用户而言不够专业.体验较差,因此有需要提供一个专门的App,来实现管理或查看功能. 对于这个App,存在两种方案:一是开发全新的App,通过调用ThingsBoard的API实现相应功能,该方法是完全的Native开发模式:二是将ThingsBoard的UI打包,以App的形式内置网页方式的浏览.前一种方式成本较高.周

将现有vue项目基于electron打包成桌面应用程序

一.前言 项目本来打算采用B/S架构去做的,只是在"人群中多看了你一眼",便直接撸了. 二.使用electron集成桌面应用 本身项目是使用vue-cli开发的,在使用electron之前,需要将本身的项目打包好后打开index.html能显示网页.因为刚接触便直接拿官方demo进行打包了. 1.克隆官方demo:git clone https://github.com/electron/electron-quick-start 2.cd electron-quick-start-&g

突破短板,传统桌面程序 使用webapi 扩展迎合web和移动端融合的需求

传统桌面程序不能完全被web和移动端替代,但是需要改造.这里要说的是巧用webapi把以前用dll和com组件,ocx等方式做接口,做分布式开发的方式,改成restful 风格api的方式实现跨平台,多客户端(类型).并分享几则案例. 1.智能储物柜 项目背景:某智慧城市项目需要用到有智能锁的储物柜,用app扫码控制存取,并和智慧城市后台交互.智能锁系统是工业的塔式控制器,使用modbus ascii协议控制,端口使用串口.储物柜配备了工控电脑32寸竖屏,工控电脑控制塔式控制器(单片机),工控机

解决python3使用cx_Freeze打包成exe后不能运行

我使用的是python3.4,在使用cx_Freeze打包成exe后发现有些打包后程序能够运行,但是有些无法运行 这是控制台报错 经过多方查找发现原来是windows缺少一些python的扩展包 如下图所示: 只要下载对应的扩展包安装上就能正确的打包成exe运行了. 扩展包下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 扩展包安装方式: pip install 安装包.whl

【前端工具】Chrome 扩展程序的开发与发布 -- 手把手教你开发扩展程序

关于 chrome 扩展的文章,很久之前也写过一篇.清除页面广告?身为前端,自己做一款简易的chrome扩展吧. 本篇文章重在分享一些制作扩展的过程中比较重要的知识及难点. 什么是 chrome 扩展程序 扩展程序是一些能够修改或增强 Chrome 浏览器功能的小程序.对于前端工程师而言,其最大的便利就是我们可以应用我们熟悉的 HTML.CSS . Javascript 等技术来制作扩展程序. 如下图所示,这些图标就是各种开发者提供的 chrome 扩展程序: 区分扩展与插件 很多人会误称扩展程