Electron学习-对话框(2021.1.31&2.1)

注意:

  • 真的从0开始,只有一点C/C++基础,所以js这方面完全是真·零基础,完全亦步亦趋跟着老师走的。看的是b站上“技术胖”老师的视频,学成必谢555(老师的网站是jspang.com,视频、文章都是免费的,太良心了555)
    但是看了几集发现这个老师举例不太恰当,望注意哈。
  • 之前的学习记录都在电脑里,之后有空慢慢传上来
  • 学的是electron,用的是vs code
  • 写这个的主要目的是怕自己之后忘了,方便捡起来
  • 说句题外话,我26号出门的时候手机被偷了,搞的我这两天不得安宁。这事非常离谱,大家一定注意莫名其妙往你身上靠的人。
  • 另外一句题外话,做什么都别着急。我丢了手机之后立马买了一部。上午买的,下午就打电话给我说找到了。不得不说这真离谱。
  • 不知不觉2021年的第一个月就过去了,感觉自己啥都没干,要加油啊!(这不是你自己给自己点赞的理由)

--学习内容:对话框API

对话框有三种:一、选择文件 二、保存文件 三、确认

dialog是主线程中的一个类(渲染进程中remote)

  • 基本属性(可选)
    1.title对话框标题
    2.defaultPath默认打开路径
    3.buttonLabel确认按钮的自定义标签(为空时,使用默认标签)
    4.filters文件选择过滤器(按扩展名)
    5.properties文件属性(文件/文件夹/隐藏文件)
  • 回调函数
    *:如果是异步可以用then实现

一、dialog.showOpenDialog(基本属性).回调函数
step1:打开文件选择对话框
在html中body下添加script组件,点击按钮就打开“打开文件”对话框

<script>
    const {dialog}=require('electron').remote
    var dlgbtn=document.getElementById('dlgbtn')
    //var dlgbtn=document.querySelector('#dlgbtn')//可互换
    dlgbtn.onclick=function(){
        //打开文件选择对话框
        dialog.showOpenDialog({
            title:'打开文件'
        })
    }
</script>

step2:显示所选择的图片
异步处理.then,把获取到的result用于函数段。
1.在渲染层的html中,body里整一个image单标签组件

<img id="img1" style="width:100%" />

2.在body外的script中,把result中的src赋给image组件

//紧紧跟在dlgbtn.onclick那一段后面!
.then(res=>{
            //打印结果
            console.log(res)
            //获取body中的image组件img1
            let img1=document.getElementById('img1')
            //把res中的文件路径字段赋给img1。[0]是指如果选了多张图片,那就是第一张
            img1.setAttribute("src",res.filePaths[0])
        }).catch(err=>{
            //如果错误,打印错误信息
            console.log(err)
        })

二、showsavedialog(基本属性).回调函数
step1:和一、的step1相似,在script里写:点击按钮打开“保存文件对话框”

var svbtn=document.getElementById('svbtn')
    svbtn.onclick=function(){
        dialog.showSaveDialog({
            title:'保存到'
        })

step2:保存位置获取,并向保存的文件中写入内容:.then中用fs方法
*:所以要在script的开头补一句

const fs=require('fs')
.then(result=>{
            console.log(result.filePath)
            //按照路径写入文件,后一个参数是写入内容
            fs.writeFileSync(result.filePath,'轻轻松松')
        }).catch(err=>{
            console.log(err)
        })

效果:输入路径为333.txt

三、dialog.showMessageBox()
1.属性:

  • type:String,对话框类型,可选填入none,warning,info,error,question
  • title:String,对话框标题
  • message:必填,String
  • buttons:数组类型

2.示例
step1:跟上面一样,在body里整一个按钮

<button id="msgbtn">弹出对话框</button>

step2:在script里获取按钮,然后监听点击事件弹出消息框,并设置消息框的一些参数

var msgbtn=document.getElementById('msgbtn')
    msgbtn.onclick=function(){
        dialog.showMessageBox({
            type:'warning',
            title:'华',
            message:'闭上眼睛,这叫养精蓄锐',
            //这里会根据选择的按钮返回对应的数组下标
            buttons:['好诶!','该死!']
        })

step3:根据按钮选择进一步操作

.then(res=>{
            console.log(res)
            //如果选择好诶
            if(res.response==0){
                alert('zzz')
            }
            else{
                alert('今日事,今日毕')
            }
        })


效果如下:选择不同,response不同(对应按钮的数组下标)可以用if来分别响应

 

 

&lt;think&gt;好的,我现在需要解决用户关于如何使用Electron--trace-deprecation参数来定位警告来源的问题。首先,我得回忆一下Electron的相关知识,特别是关于调试和警告追踪的部分。用户提到了引用中的内容,特别是引用[1]和[3]中的DEP0128警告,以及他们想通过--trace-deprecation参数来追踪问题。 首先,我需要确认--trace-deprecation的正确使用方法。通常,在Node.js中,可以通过在启动命令时添加--trace-deprecation来显示详细的弃用警告堆栈。但Electron应用可能有些不同,因为涉及到主进程和渲染进程。用户可能是在运行npm run electron:serve时遇到警告,所以需要将参数传递给Electron的执行命令。 接下来,我需要检查用户提供的引用内容。引用[3]提到解决方法需要修改vue.config.js中的配置,调整输出文件名。这可能与package.json中的main字段指向的文件名有关,比如从index.js改为background.js。但用户现在的问题不是如何解决这个警告,而是如何用--trace-deprecation参数来追踪来源,所以需要指导用户如何正确应用这个参数。 然后,用户可能使用npm脚本启动Electron,比如在package.json中的scripts部分有类似&quot;electron:serve&quot;: &quot;electron .&quot;。要添加参数,应该修改脚本,例如:&quot;electron:serve&quot;: &quot;electron --trace-deprecation .&quot;。这样在运行npm run electron:serve时,Electron会启用堆栈跟踪,显示警告的具体来源。 另外,如果用户使用的是vue-cli-plugin-electron-builder这样的插件,可能需要通过环境变量或修改配置来传递参数。例如,在vue.config.js中配置args参数,将--trace-deprecation添加到Electron的启动参数中。 还需要考虑跨平台的情况,比如在Windows和Linux/macOS中环境变量的设置方式可能不同。用户可能在Windows上开发,所以要注意命令的语法是否正确。 另外,用户可能遇到的是主进程中的警告,而--trace-deprecation参数需要传递给Electron的主进程。如果用户通过npm脚本启动,确保参数正确传递到Electron可执行文件,而不是被npm或其他中间层截获。 最后,应该建议用户运行命令后,检查终端输出的堆栈跟踪,找到具体的文件和代码行,从而定位问题。例如,警告可能指向某个依赖模块中的过时代码,用户可以根据堆栈信息升级依赖或修改配置。 总结步骤应该是:1. 修改启动命令,添加--trace-deprecation参数;2. 运行命令并查看详细堆栈;3. 根据输出定位问题源。同时,可能需要结合用户项目中的具体配置,如vue.config.js或package.json的调整,确保参数正确应用。&lt;/think&gt;### 如何使用 Electron 的 `--trace-deprecation` 参数定位警告来源? #### 步骤说明 1. **修改启动命令** 在 `package.json` 的 `scripts` 字段中,找到启动 Electron 的命令(例如 `electron:serve`),添加 `--trace-deprecation` 参数: ```json &quot;scripts&quot;: { &quot;electron:serve&quot;: &quot;electron --trace-deprecation .&quot; } ``` 如果是通过 `vue-cli-plugin-electron-builder` 插件启动,需在 `vue.config.js` 中配置 Electron 参数[^3]: ```javascript module.exports = { pluginOptions: { electronBuilder: { mainProcessArgs: [&#39;--trace-deprecation&#39;] } } }; ``` 2. **运行并查看详细堆栈** 执行命令后,终端会输出完整的弃用警告堆栈信息: ```bash npm run electron:serve ``` 示例输出: ``` (node:19844) [DEP0128] DeprecationWarning: Invalid &#39;main&#39; field... at Object.&lt;anonymous&gt; (D:\project\background.js:10:5) at Module._compile (internal/modules/cjs/loader.js:999:30) ``` 堆栈会明确指出触发警告的文件路径和代码位置[^1][^3]。 3. **定位问题根源** - **`main` 字段配置错误**:若警告指向 `dist_electron/package.json`,检查打包配置中输出文件名是否与 `main` 字段匹配(例如 `background.js` 是否生成)[^3]。 - **依赖模块过时**:若堆栈指向第三方模块(如 `node_modules/...`),需升级该模块或提交 Issue 反馈。 #### 其他注意事项 - 若使用 `npm run electron:serve` 启动,确保参数传递到 Electron 进程而非 Webpack。 - Windows 环境下,若命令参数解析异常,可尝试使用双引号包裹: ```bash electron &quot;--trace-deprecation&quot; . ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值