最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 关于第一个项目中主进程与渲染进程各模块功能的理解

    正文概述 掘金(柠檬有点萌)   2021-01-15   614

    1.写在前面

    环境基础:vscode(+常用插件)+git+node+npm+electron+vue(es6+js+vuecli)+websocket

    -->安装32位electron:

    1.先初始化:npm init

    2.npm install electron --save-dev

    3.或者npm install --arch=ia32 --platform=win32 electron

    4.验证安装成功 npx electron -v

    5.安装timer.js:npm install timer.js

    -->git相关指令:上传、下拉、更新等(也可软件内可视化操作)

    git add .

    git commit

    git push

    -->node中重要目录:(child_process子进程 && events事件触发器 && global全局变量 && path路径 && URL && stream流)

    -->vue重要语法:(router,Vuex,自定义组件)

    -->ES6重要语法: 2,3,4,7,8,9,16,20,21,22,23,24

    -->关于electron

    -->http、tcp、websocket 看阮一峰文档、博客

    2.关于第一个项目中主进程与渲染进程各模块功能的理解

    来自网上一张图 关于第一个项目中主进程与渲染进程各模块功能的理解 关于第一个项目中主进程与渲染进程各模块功能的理解

    render进程:

    1.Main.js为项目入口,引入app.js组件,通过路由渲染根组件Layout和子组件home\index.vue

    2.views为页面组件,components为零件组件

    3.utils用来与主进程通信

    a.封装向主进程发送消息的格式(invoke->handle)
    b.global用来定义全局变量,渲染进程直接引用如:bus.on,client.on(其中client可以监听的方法都定义在client函数中),device.lia等等

    4.tools用来处理websocket,当时项目由于数据卡顿影响性能,转到主进程中处理

    5.styles存放全局样式

    6.store存放状态变量

    7.assets存放图标图片等

    8.router

    import Vue from 'vue'
    import Router from 'vue-router'
    // 引入路由表
    import routerMap from './constantRouterMap'
    
    Vue.use(Router)
    
    export default new Router({
      scrollBehavior: () => ({ y: 0 }),// 借助vue-router提供的scrollBehavior来管理组件的滚动行为
      routes: [{
        path: '/',
        component: Layout,
        redirect: '/home', // 子组件默认的定向
        hidden: true,
        children: [{
          path: 'home',
          component: () => import('@/views/home/index')
        }]
      }]
    })
    

    main主进程:

    1.主进程的入口文件,这里主要调用app方法,控制应用程序的生命周期

    2.sevices用来处理与渲染进程进行通信的逻辑

    a.IPCMain:主要用来处理通信函数,封装数据包的格式
    b.windowManger:控制软件窗口的创建与参数配置等,需要单独将写在其他文件的函数都引用进来,如IPCMain文件

    3.config -----一些配置,还没弄明白

    a.menu.js:是定义原生菜单的地方,可以自定义菜单项以及他们的子项,子项还能实现添加点击事件,打开一个新窗口等操作

    4.client!!!重要

    a.在client.js中自定义一个原型client类继承EventEmitter,每3秒触发一次open函数,相当于3秒监听一次websocket以及它发生的事件,并用emit发送出去,有client.on来接收~
    b.在index.js中监听各个事件(open、error、close、message),并打印对应的日志
    c.bus总线,用来分发消息
    d.device:处理跟设备相关的文件,接收数据并将数据交给bus来处理(主进程和渲染进程通用),并导出指令包(index.js)!
    i._common_directive.js: 封装了向服务器发送数据的格式
    ii.modules:定义数据下发的指令(lia.js)

    e.events

    <template>
      <Framer>
        <mainHead slot="header" v-if="winSize ==='small'"></mainHead>
        <renderHead slot="header" v-else></renderHead>
     </Framer>
    </template>
    <script>
    import Framer from '@/components/frame/mainFrame.vue'
    import mainHead from '@/components/header/mainHead.vue'
    import renderHead from '@/components/header/RenderHead.vue'
    
    export default {
      name: 'MainWindow',
      components: { Framer, mainHead, renderHead }
    }
    </script>
    
    <template>
      <div>
        <!-- 具名插槽 -->
        <slot name="header"></slot>
        <div class="body-container">
          <slot>
            <!-- 子路由匹配到的子组件显示的地方 -->
            <router-view></router-view>
          </slot>
        </div>
      </div>
    
    </template>
    

    详见

    3.积累文档

    css

    某个模块div元素整体缩放功能:transform:scale(1.5)可以缩放属性元素所在标签,当前设置放大1.5倍。


    下载网 » 关于第一个项目中主进程与渲染进程各模块功能的理解

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元