머리말
이 글은 nw 개발 과정에서 겪게 되는 다양한 문제에 대한 내용이며, 같은 문제를 겪으신 분들을 위한 메모와 해결 방법에 대해서만 기록되어 있습니다.
1. package.json의 창 필드가 유효하지 않습니다
Reason: package.json
의 window
필드는 main
에만 있습니다. > 해당 필드가 *.html
이거나 외부 URL인 경우 유효하며, *.js
인 경우 유효하지 않습니다. package.json
中的window
字段,只在main
字段为*.html
或是外部网址时有效,当为 *.js
时是无效的。
{ "name": "blog", "main": "http://php.cn/",//main为网址,下方的window设定有效 //"main": "index.html",//main为 *.html,下方的window设定有效 //"main": "index.js?1.1.11",//main为 *.js,下方的window设定无效!! "version": "0.0.1", "window": {"title": "Nw.js Demo",//如果 index.html没有title,则会显示这里的值"icon": "assest/img/logo.png",//标题栏图标"position": "center",//默认显示位置"width": 1280,"height": 680,"frame": true,//是否显示最外层的框架,设为false之后 窗口的最小化、最大化、关闭 就没有了"resizable": true,"min_width": 1028 },}
关于其他package.json中的可使用的配置见官网:
2. nw-builder一次只能打包一个项目
nw默认不包含打包成.exe文件的形式,遂nw-builder
项目为自动将nw应用打包压缩成可执行文件的程序。
详见:
假设nw-builder的配置文件如下:
var nw = new NwBuilder({ version: '0.14.7', files: './app/**',//nw应用项目目录 platforms: ['win32'], });
配置字段files指定了app文件夹下的所有文件,但app文件夹下存在两个项目:nw-demo和zfile-explorer
对于这种情况nw-builder只会打包出按文件名排序的第一个文件夹项目:nw-demo
3. 在nw中植入全局变量的方法
前提:需要在nw项目中的package.json中的main字段指定为*.js文件。或是指定本地的.html文件后再载入js文件
package.json文件{ "name": "nw-demo", "version": "1.0.0", "description": "", "main": "./main.js?1.1.11", "scripts": {"start":"cd ../../ & gulp nw" }, ...}
在mian字段指定的js文件中,再使用nw.Window.open
来载入指定本地页面或是外部网址,如:
main.js文件:nw.Window.open('./view/index.html', {height:600,width:800}, function (win) { });
在这个js文件中可以使用4种方法植入全局变量或全局方法:
1、将全局变量使用var方式声明赋值
2、将全局变量直接赋值,无定义
3、将全局变量挂载到window
上
4、将全局变量挂载到global
上
测试代码:
main.js文件//var定义方式var xxcanghai_1 = 1;//直接赋值方式xxcanghai_2 = 10;//挂载到window对象上window.xxcanghai_3 = 100;//挂载到global对象上global.xxcanghai_4 = 1000;
在用nw动态载入的页面中写入一下代码测试
./view/index.html文件 <script> console.log(xxcanghai_1);//报错 console.log(window.xxcanghai_1);//undefined console.log(global.xxcanghai_1);//1 console.log(xxcanghai_2);//报错 console.log(window.xxcanghai_2);//undefined console.log(global.xxcanghai_2);//10 console.log(xxcanghai_3);//报错 console.log(window.xxcanghai_3);//undefined console.log(global.xxcanghai_3);//100 console.log(xxcanghai_4);//报错 console.log(window.xxcanghai_4);//undefined console.log(global.xxcanghai_4);//1000 </script>
结论:
在动态加载的页面中,访问全局变量只能使用global.*
的方式。
之所以会这样是因为nw的运行环境是chromium和Nodejs混合的。所以可以在网页js中执行Nodejs代码。
虽然可以但不应该!
从页面代码的责任一致性上不应该在网页代码中编写nodejs代码,遂应该将global中的对象写入每个网页的window对象中。之后页面代码再从window.*
中调用
植入每个页面window中的方法
可利用nw的对package.json
扩展字段的inject_js_start
和inject_js_end
来实现。
官方说明:
inject_js_start: The injecting JavaScript code is to be executed after any files from css, but before any other DOM is constructed or any other script is run.inject_js_end: The injecting JavaScript code is to be executed after the document object is loaded, before onload event is fired. This is mainly to be used as an option of Window.open() to inject JS in a new window.
http://docs.nwjs.io/en/latest/References/Manifest%20Format/#inject_js_start
inject_js_start
字段指向本地的js文件,他可以在加载的任何页面的任何页面js执行前执行。
package.json文件:{ "name": "blog", "version": "1.0.0", "main": "./main.html", "inject_js_start": "./js/inject_js_start.js?1.1.11",//设置所有页面前植入的js文件地址 "author": "php@gmail.com", "license": "ISC",}
在植入的js文件中,将global中的变量赋值到当前页面window中
./js/inject_js_start.js文件://将node的global中的变量写入每个即将打开的页面的js的window对象中window["xxcanghai_1"] = global["xxcanghai_1"]
之后即可在任何nw打开的页面中通过window.xxcanghai_1
来访问全局变量了。
4. nwjs主进程出现异常后不显示窗体
现象:nwjs主进程出现异常后不显示窗体,不弹出错误提示,也不会自动结束进程
原因:package.json
文件中的main
字段为.js
文件,同时此js文件出现error时会出现此问题。
解决方案:package.json
文件中的main
字段使用.html
다른 package.json에서 사용 가능한 구성은 공식 웹사이트를 참조하세요.
2 nw-builder는 한 번에 하나의 프로젝트만 패키징할 수 있습니다.
🎜nw 기본적으로 .exe 파일로의 패키징은 포함되지 않으므로nw-builder
프로젝트는 nw 애플리케이션을 실행 파일로 자동으로 패키징하고 압축하는 프로그램입니다. 자세한 내용은 다음을 참조하세요. 🎜🎜 nw-builder의 구성 파일이 다음과 같다고 가정합니다. 🎜
🎜rrreee🎜 구성 필드 파일은 앱 폴더 아래의 모든 파일을 지정합니다. , 그러나 앱 파일 폴더 아래에는 nw-demo 및 zfile-explorer라는 두 개의 프로젝트가 있습니다.행🎜🎜이 경우 nw-builder는 파일 이름으로 정렬된 첫 번째 폴더 프로젝트만 패키징합니다: nw-demo
행🎜🎜3. nw에 전역 변수를 삽입하는 방법🎜🎜🎜사전 조건🎜: nw 프로젝트의 package.json에 있는 기본 필드는 다음을 충족해야 합니다. *.js 파일로 지정하세요. 아니면 로컬 .html 파일을 지정하고 js 파일을 로드하세요🎜
🎜rrreee🎜메인 필드에 지정된 js 파일에서 nw.Window.open를 사용하여 지정된 로컬 페이지 또는 외부 URL을 로드합니다. 예: 🎜<p class="sourceCode"><br>🎜rrreee🎜이 js 파일에서는 4가지 방법을 사용하여 전역 변수 또는 전역 메서드를 이식할 수 있습니다. br/>1. 전역 변수를 선언하고 할당하려면 var 메서드를 사용하세요.<br>2. 정의 없이 직접 전역 변수를 할당하세요.<br>3. 전역 변수를 <code>window
에 마운트하세요.4 . 전역 변수를 global
🎜🎜에 마운트합니다. 테스트 코드: 🎜
🎜rrreee🎜nw로 동적으로 로드된 페이지에서 코드 작성 test🎜rrreee🎜🎜결론 🎜:
동적으로 로드된 페이지에서 전역 변수는 global.*
메서드🎜를 통해서만 액세스할 수 있습니다.
그 이유는 nw의 실행 환경이 🎜chromium🎜과 🎜Nodejs🎜이 혼합되어 있기 때문입니다. 따라서 Nodejs 코드는 웹페이지 js에서 실행될 수 있습니다.
할 수 있지만 그렇게 해서는 안 됩니다!
페이지 코드의 책임 일관성 관점에서 nodejs 코드를 웹페이지 코드에 작성해서는 안 되므로 전역에 있는 객체를 각 웹페이지의 window 객체에 작성해야 합니다. 그 후 페이지 코드는 창에서 호출됩니다.*
🎜
각 페이지 창에 이식된 메서드
🎜nw의package.json
를 사용할 수 있습니다. inject_js_start
및 inject_js_end
필드를 확장하여 🎜🎜공식 설명:🎜
🎜inject_js_start🎜: 삽입하는 JavaScript 코드는 CSS의 모든 파일 이후, 다른 DOM이 구성되거나 다른 스크립트가 실행되기 전에 실행됩니다.🎜🎜🎜inject_js_end🎜: 주입되는 JavaScript 코드는 문서 객체가 로드된 후 onload 이벤트가 발생하기 전에 실행됩니다. 이는 주로 새 창에 JS를 주입하기 위한 Window.open() 옵션으로 사용됩니다.🎜🎜http:// docs.nwjs.io/en/latest/References/Manifest%20Format/#inject_js_start🎜
inject_js_start
필드는 로컬 js 파일을 가리키며, 모든 페이지에서 모든 페이지 js를 로드할 수 있습니다. 실행 실행 전. 🎜
🎜rrreee🎜이식된 js 파일에서 현재 페이지 창에 전역변수를 할당해주세요🎜
🎜rrreee 🎜이후, nw가 연 모든 페이지에서 window.xxcanghai_1
을 통해 전역 변수에 액세스할 수 있습니다. 🎜🎜4. nwjs 메인 프로세스는 예외 발생 후 양식을 표시하지 않습니다🎜🎜🎜Phenomena🎜: nwjs 메인 프로세스는 예외 발생 후 양식을 표시하지 않고 오류 메시지가 나타나지 않으며 프로세스가 자동으로 종료되지 않습니다.
🎜Reasons🎜: package.json
파일의 main
필드는 .js
파일이며, 이 문제는 이 js 파일에서 오류가 발생합니다.
🎜해결책🎜: package.json
파일의 main
필드에 .html
파일을 사용한 다음 파일을 로드하세요. nw 메인 프로그램 js 파일로 실행하면 충분합니다. 이렇게 하면 오류가 보고되더라도 빈 창이 표시되면서 동시에 개발자 툴바를 통해 문제의 원인을 확인할 수 있고, 사용자도 애플리케이션을 종료하지 않고 종료할 수 있다. 프로세스. 🎜🎜기타 튜토리얼 기사🎜🎜NW.js를 사용하여 웹 애플리케이션을 데스크톱 애플리케이션으로 패키지화🎜
위 내용은 JS 데스크탑 애플리케이션 개발 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

HTML5 코드는 태그, 요소 및 속성으로 구성됩니다. 1. 태그는 컨텐츠 유형을 정의하고 다음과 같은 각도 브래킷으로 둘러싸여 있습니다. 2. 요소는 컨텐츠와 같은 시작 태그, 내용 및 엔드 태그로 구성됩니다. 3. 속성 시작 태그에서 키 값 쌍을 정의하고 기능을 향상시킵니다. 웹 구조를 구축하기위한 기본 단위입니다.

HTML5는 현대적인 웹 페이지를 구축하는 핵심 기술로 많은 새로운 요소와 기능을 제공합니다. 1. HTML5는 웹 페이지 구조 및 SEO를 향상시키는 의미 론적 요소를 소개합니다. 2. 멀티미디어 요소를 지원하고 플러그인없이 미디어를 포함시킵니다. 3. 양식은 새로운 입력 유형 및 검증 속성을 향상시켜 검증 프로세스를 단순화합니다. 4. 웹 페이지 성능 및 사용자 경험을 향상시키기 위해 오프라인 및 로컬 스토리지 기능을 제공합니다.

H5 코드에 대한 모범 사례는 다음과 같습니다. 1. 올바른 문서 선언 및 문자 인코딩 사용; 2. 시맨틱 태그를 사용하십시오. 3. HTTP 요청을 줄입니다. 4. 비동기 부하 사용; 5. 이미지 최적화. 이러한 관행은 웹 페이지의 효율성, 유지 관리 및 사용자 경험을 향상시킬 수 있습니다.

웹 표준과 기술은 현재까지 HTML4, CSS2 및 간단한 JavaScript에서 발전했으며 중대한 개발을 거쳤습니다. 1) HTML5는 캔버스 및 웹 스토리지와 같은 API를 도입하여 웹 응용 프로그램의 복잡성과 상호 작용을 향상시킵니다. 2) CSS3은 애니메이션 및 전환 기능을 추가하여 페이지를보다 효과적으로 만듭니다. 3) JavaScript는 화살표 기능 및 클래스와 같은 Node.js 및 ES6의 최신 구문을 통해 개발 효율 및 코드 가독성을 향상시킵니다. 이러한 변경으로 인해 웹 애플리케이션의 성능 최적화 및 모범 사례의 개발이 촉진되었습니다.

H5는 HTML5의 약어 일뿐 만 아니라 더 넓은 현대 웹 개발 기술 생태계를 나타냅니다. 1. H5는 HTML5, CSS3, JavaScript 및 관련 API 및 기술을 포함합니다. 2. 그것은 더 풍부하고 대화식이며 부드러운 사용자 경험을 제공하며 여러 장치에서 원활하게 실행할 수 있습니다. 3. H5 기술 스택을 사용하여 반응 형 웹 페이지와 복잡한 대화식 기능을 만들 수 있습니다.

H5 및 HTML5는 동일한 것을, 즉 html5를 나타냅니다. HTML5는 HTML의 다섯 번째 버전으로 시맨틱 태그, 멀티미디어 지원, 캔버스 및 그래픽, 오프라인 스토리지 및 로컬 스토리지와 같은 새로운 기능을 제공하여 웹 페이지의 표현성 및 상호 작용성을 향상시킵니다.

h5referstohtml5, apivotaltechnologyinwebdevelopment.1) html5introducesnewelements 및 dynamicwebapplications.2) itsupp ortsmultimediawithoutplugins, enovannangeserexperienceacrossdevices.3) SemanticLementsImproveContentsTructUreAndSeo.4) H5'Srespo

H5 개발에서 마스터 해야하는 도구 및 프레임 워크에는 vue.js, React 및 Webpack이 포함됩니다. 1.vue.js는 사용자 인터페이스를 구축하고 구성 요소 개발을 지원하는 데 적합합니다. 2. 복잡한 응용 프로그램에 적합한 가상 DOM을 통해 페이지 렌더링을 최적화합니다. 3. Webpack은 모듈 포장에 사용되며 리소스로드를 최적화합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
