jQueryμλ λ€μκ³Ό κ°μ λ΄μ©μ΄ ν¬ν¨λμ΄ μμ΅λλ€.
if ( typeof module === "object" && typeof module.exports === "object" ) {
// set jQuery in `module`
} else {
// set jQuery in `window`
}
λͺ¨λμ λΈλΌμ°μ μΈ‘ μ€ν¬λ¦½νΈμμλ μ μλ©λλ€. μ΄λ‘ μΈν΄ jQueryλ window
κ°μ²΄λ₯Ό 무μνκ³ module
λ₯Ό μ¬μ©νλ―λ‘ λ€λ₯Έ μ€ν¬λ¦½νΈλ μ μ λ²μμμ $
λλ jQuery
λ₯Ό μ°Ύμ§ λͺ»ν©λλ€.
μ΄κ²μ΄ jQuery λλ atom-shell λ²κ·ΈμΈμ§ νμ€νμ§ μμ§λ§ μΉμ μ¬λ¦¬κ³ μΆμμ΅λλ€. κ·Έλμ λ€λ₯Έ μ¬λλ€μ λ΄κ° ν λμ κ²μνμ§ μμ κ²μ λλ€.
μ΄κ²μ μ€μ λ‘ λ μμ€ν μ λ²κ·Έκ° μλλ©° browserifyλ₯Ό μ¬μ©ν λλ λμΌν λ¬Έμ κ° μμ΅λλ€. jQueryλ CommonJS νκ²½μμ μ€νλλ κ²μ νμΈνκ³ κ·Έλλ‘ μ¬μ©λκΈ°λ₯Ό κΈ°λν©λλ€.
κ·Έλ¬λ ν΄κ²° λ°©λ²μ λΉκ΅μ κ°λ¨ν©λλ€. jQueryλ₯Ό μ€ν¬λ¦½νΈ νκ·Έλ‘ λ‘λνλ λμ requireλ₯Ό ν΅ν΄ λ‘λνμμμ€.
window.$ = window.jQuery = require('/path/to/jquery');
@ChiperSoft μ λμν©λλ€. μ΄λ CommonJS νκ²½μμ μμλλ λμμ΄λ―λ‘ wontfix
. κ·Έλ¦¬κ³ λ°κ²¬ν λ΄μ©μ 곡μ ν΄ μ£Όμ
μ κ°μ¬ν©λλ€.
@ChiperSoft , require('jquery')
μλνλ €λ©΄ jquery.js νμΌμ μ΄λμ λ£μ΄μΌ νλμ? package.js
λ° main.js
μ κ°μ μμ€μ λλ €κ³ νμ§λ§ λ°νμμμ μ ννμ§ μλ κ² κ°μ΅λλ€.
require('jquery.js')
λ₯Ό μ¬μ©νμ¬ λμ .jsλ₯Ό κΈ°λ‘νμ¬ HTML νμΌκ³Ό κ΄λ ¨λ jqueryλ₯Ό λ‘λν μ μμ΅λλ€.
μ£μ‘ν©λλ€. μΈκΈν λλ‘ window.$ = window.jQuery = require('/path/to/jquery');
λ₯Ό μ¬μ©νμ§λ§ μλνμ§ μμ΅λλ€.
Uncaught Error: Cannot find module 'scripts/jquery-1.10.2.min.js' module.js:339
λλ νμ κ·Έκ²μ μ¬μ©νκ³ νλ₯νκ² μλν©λλ€! λ΄κ° μ¬μ©νλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
window.$ = window.jQuery = require('./scripts/jquery-2.1.1.min.js');
@frankhale μ€, ./
μ ν¨κ» μλνμ΅λλ€. κ°μ¬ν©λλ€!
μμ²λ! κ²½λ‘ λ¬Έμ λ μ λ₯Ό λμ΄λ¨λ Έμ΅λλ€.
μ±μ λ
Έλ ν΅ν©μ΄ νμνμ§ μμ κ²½μ° BrowserWindow μ΅μ
μ "node-integration": false
λ₯Ό μΆκ°νμμμ€. μ΄ κ²½μ° module.exports
λ₯Ό μ¬μ©ν μ μμΌλ©° jQueryλ μμλλ‘ μλν©λλ€.
@kabalage λ νλ₯νκ² μλνμ΅λλ€. κ°μ¬ν©λλ€!
:+1:
κ°μ λ¬Έμ λ‘ κ±Έμ΄κ°μ΅λλ€. NPMμ ν΅ν΄ jQueryλ₯Ό μ€μΉν λ€μ νμνκ³ μλνμ΅λλ€.
requireκ° μλ λ Έλ μ μν λ° jqueryκ° νμν κ²½μ°...
λλ μ΄κ²μ΄ λ΄κ° μ¬μ©ν μμλ κ² κ°κΈ° λλ¬Έμ μ΄κ²μ μ΄ν΄νλ €κ³ λ Έλ ₯νκ³ μμ΅λλ€. κ·Έλ¬λ μΈμ $λ₯Ό μμ νκ² μ¬μ©ν μ μλμ§ κΆκΈν©λλ€. μ΄ μ€ λ°λ‘ λ€μ $λ₯Ό κΈ°λ‘νλ©΄ requireκ° λΉλκΈ°μμ΄λ―λ‘ jqueryκ° μλ requireκ° λ κ²μ λλ€.
window.$ = window.jQuery = require('/κ²½λ‘/λμ/jquery');
console.log($) // 'jQuery'κ° μλ 'require'λ₯Ό κΈ°λ‘ν©λλ€.
@dieroux npmμ ν΅ν΄
npm install jquery
μ΄κ²μ κ°μ κ²μ μλνλ λμ λλ₯Ό μν΄ μΌνμ΅λλ€. κ·Έλ° λ€μ κ²½λ‘λ₯Ό μ 곡ν νμκ° μμ΅λλ€. λ€μκ³Ό κ°μ΄ λ§νλ©΄ λ©λλ€.
window.$ = window.jQuery = require('jquery');
console.log( [$, jQuery ]);
λ
Έλ ν΅ν©μ΄ νμνκ³ require('something') μ μ¬μ©ν μ μλ€λ©΄ μ΄λ»κ² λ κΉμ?
νμ¬ "λͺ¨λ μμ "λ₯Ό μννμ¬ μλν©λλ€. λ¬Έμ λ₯Ό λ‘λνκΈ° μ μ.
μ΄λ κ² νλ©΄ μ΄λ€ μν₯μ΄ μμ΅λκΉ?
webviewμ μ¬μ λ‘λ μ€ν¬λ¦½νΈμμ jqueryκ° μ²μ νμν λ jqueryλ₯Ό μ¬λ°λ₯΄κ² λ‘λν μ μλ μ μ¬ν λ¬Έμ κ° μμ΅λλ€. κ·Έλ¬λ jqueryκ° μΈλΆ νμ΄μ§μμ λ λ²μ§Έλ‘ μ°Έμ‘°λ λ λ€μμ ν΅ν΄ ν λΉν©λλ€.
try {
module.exports = null;
if (typeof require === 'function') {
alert('window: ' + window);
alert('jquery: ' + window.jQuery);
alert('export: ' + module.exports);
if ( !window.jQuery ) {
alert('before load');
window.jQuery = require('./node_modules/jquery/dist/jquery.js');
alert('after load');
window.$ = window.jQuery;
alert('after assignment');
}
alert('jquery: ' + window.jQuery);
}
} catch(e) {
alert('failed load.');
console.log(e);
}
requireμμ window.jQueryμ ν λΉν λ μ½μμ μ μλμ§ μμ μμ± createElementλ₯Ό μ½μ μ μμ΅λλ€. κ²°κ³Όμ μΌλ‘ jQueryκ° λ‘λλμ§ μμ΅λλ€.
μ½μμ μ€λ₯ λ©μμ§λ λ€μκ³Ό κ°μ΅λλ€.
κ²μ€νΈ νμ΄μ§μ λ©μμ§κ° κΈ°λ‘λ¨: TypeError: μ μλμ§ μμ μ€μ 'createElement' μμ±μ μ½μ μ μμ: 40
νμ νμ΄μ§μμ jqueryλ₯Ό μ±κ³΅μ μΌλ‘ λ‘λνλ λ°©λ²μ λν μΆκ° μκ°μ΄ μμ΅λκΉ?
κ°μ¬ ν΄μ.
μ΄κ²μ μ μ λΉ λ₯Έ μμμ μ€ννκ³ λ‘컬 μ±μ λννλ €κ³ ν λ λ΄κ° μ²μμΌλ‘ λμ΄μ§ κ²μ λλ€. ν¬λ‘¬μμ μλνλ κ²μ΄ κ°μκΈ° μ κ±°μμ μλνμ§ μμ΅λλ€. μ€ν¨ν Angular λͺ¨λ λ‘λμ μ€λ₯κ° λ¬»ν μλ κ²μ λ¬Όλ‘ λμμ΄ λμ§ μμΌλ―λ‘ μ€ν¬λ¦½νΈ λ‘λ μμμ λ¬Έμ κ° μλ€κ³ κ°μ νλλ°, μ΄κ²μ΄ μ κ° μ΄ μ€λ λλ₯Ό μ°Ύμ λ°©λ²μ λλ€. μλ§λ ν€μλκ° λ€λ₯Έ μ¬λλ€μκ² λμμ΄ λ κ²μ λλ€.
μμ @kabalage μ μ루μ μ μλ²½νκ² μλνμ΅λλ€.
μλ νμΈμ μ¬λ¬λΆ, μ λ μ΄ λ¬Έμ μ λν΄ λͺ κ°μ§ μ 보λ₯Ό μΆκ°νκ³ μΆμ΅λλ€. μ μ μ½μ $μ jquery λΌμ΄λΈλ¬λ¦¬ μ½λλ₯Ό λΆμ¬λ£κ³ jQueryκ° μ°½ κ°μ²΄μ ν¨μλ‘ μΆκ°λλ©΄. λλ jqueryλ₯Ό μ€νν μ μμλ€.
μ€ν¬λ¦½νΈ νκ·Έκ° μλ μ°Έμ‘° jQuery, λμΌν μ€λ₯μ λλ€. "λ Έλ ν΅ν©"ν΄μΌ ν¨: BrowserWindow()μμ false
μλ νμΈμ μ¬λ¬λΆ... μ΄ λ¬Έμ κ° μ’ λ£λ μ΄μ λ₯Ό μ λͺ¨λ₯΄κ² μ΅λλ€. μ¬κΈ°μ μ¬μ ν λ¬Έμ κ° μμ΅λλ€. μ€λͺ νκ² μ΅λλ€. NPMμ ν΅ν΄ λ‘μ»¬λ‘ jQueryλ₯Ό μ€μΉνκ³ λ‘컬 html νμΌμ λ‘λνλ κ²½μ° λ€μμ μ¬μ©ν©λλ€.
mainWindow.$ = require('jQuery');
mainWindow.jQuery = require('jQuery');
κ·Έλ¬λ©΄ μμλλ‘ μλν©λλ€. κ·Έλ¬λ mainWindow.loadUrl('http://external.site.com");
$ λ° jQueryκ° μ μλμ§ μμ μμΉμμ μΈκΈλ μ€λ₯κ° λ°μν©λλ€. λ Έλ ν΅ν©μ λΉνμ±ννλ κ²μ μ€μ λ‘ μμ© κ°λ₯ν λλ΅μ΄ μλλλ€. κ·Έκ²μ΄ λ΄κ° μ²μμ Electronμ μ¬μ©νλ μ΄μ μ λλ€. μ λ κ·Έκ²μ΄ νμν©λλ€.
μμ€μ λ€μ΄κ° μ§μ λ¬Έμ λ₯Ό ν΄κ²°νκ³ μΆμ§λ§ λ΄κ° κ±°κΈ°λ‘ λ΄λ €κ°κΈ° μ μ μ¬λ°λ₯Έ λ°©ν₯μΌλ‘ λλ₯Ό κ°λ¦¬ν€λ μΆκ° μ λ³΄κ° μλ μ¬λμ΄ μλμ§ νμΈν΄μΌ νλ€κ³ μκ°νμ΅λλ€. μΈλΆ μ¬μ΄νΈμ λν΄ λ Έλ ν΅ν©κ³Ό ν¨κ» μλνλλ‘ ν μ μλ μ¬λμ΄ μμ΅λκΉ?
κ°μ¬ν©λλ€... κ·Έλ¦¬κ³ μκ³ νμ ¨μ΅λλ€. μ΄μ²λΌ μλ‘κ³ μλ¦λ€μ΄ λͺ¨λ κ²μ μ½κ°μ μ£Όλ¦μΌλ‘ μμλ κ²μ λλ€.
μλΆ μΈμ¬
/W
λ Έλ ν΅ν©μΌλ‘ μλνκ² λ§λ€μμ΅λλ€.
<script>window.$ = window.jQuery = require('jquery');</script>
μ ν¨κ» require μ¬μ©μμ λͺ¨λ κ²μ λ΄ κ²½νμ μν΄μλ§ λ·λ°μΉ¨λ©λλ€.
μλν©λλ€
<script>window.$ = window.jQuery = require('jquery');</script>
<script src="path_to/bootstrap.js"></script>
νμ§ μμ κ²μ΄λ€
<script>window.$ = window.jQuery = require('./path/to/jquery.js');</script>
// or
<script src="path_to/jquery.js"></script>
<script src="path_to/bootstrap.js"></script>
μλ νμΈμ dilmdeepλ, λΉ λ₯Έ λ΅λ³ κ°μ¬ν©λλ€. μ루μ μ΄ μΈλΆ μ¬μ΄νΈμ λν μ μ΄ κΆνμ μμ‘΄ν©λκΉ? μμ€ μ‘μΈμ€ κΆνμ΄ μλ μ¬μ΄νΈλ₯Ό λ‘λνλ €κ³ ν©λλ€. λΉμ μ΄ packages.jsonμ λν΄ λ§ν κ²μ ν₯λ―Έλ‘μ΅λλ€. λλ npmμ ν΅ν΄ jQueryλ₯Ό μ€μΉνκ³ (κ·Έλ¦¬κ³ μ μμ λν΄ λ¬Έμνλ μ¬κ΅¬μΆμ μ¬μ©νλ€) λ΄κ° λ§νλ―μ΄ λ‘컬 HTML νμΌκ³Ό ν¨κ» jQueryλ₯Ό μ¬μ©ν μ μμ§λ§ jQueryλ λ΄ package.jsonμ μ μλμ΄ μμ§ μλ€..... μ κ·Έλ¦¬κ³ λλ ν μ€νΈνλ€. λ Έλ ν΅ν©μ λΉνμ±ννκ³ μλνλ λμ νμν κ²μ μλλλ€. κ°μ¬ ν΄μ.
λ€λ₯Έ μ¬λμ΄ κ°μ λ¬Έμ μ μ§λ©΄ν κ²½μ°λ₯Ό λλΉνμ¬ μ΄ μ 보λ₯Ό μ λ°μ΄νΈνκ³ μΆμμ΅λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²(10GBμ Electron μμ€ λ€μ΄λ‘λ ν)μ μ€μ λ‘ λ¬Έμμ μ²μλΆν° μμμ΅λλ€. μΈλΆ μ¬μ΄νΈμ URLμ νΈμΆνλ λμ λ‘컬 HTML νμΌμ λ‘λνκ³ ν΄λΉ HTML νμΌμ webviewλ₯Ό μ¬μ©νμ¬ μΈλΆ μ¬μ΄νΈλ₯Ό λ‘λνμ΅λλ€. λ Έλ ν΅ν©μ΄ νμ±νλ μνμμ μλ²½νκ² λ‘λλ©λλ€. webviewμ λν λ¬Έμλ₯Ό 보면 κ½€ κ°λ¨ν©λλ€. λν μ±ν λ°©μμ λ΄κ° μμ€λ₯Ό μμν μ μλλ‘ λμμ€ Paulμκ²λ κ°μ¬λ립λλ€. λκ΅°κ°κ° Atomμ μ¬μ©νμ¬ Electronμ μ½λ©νκ³ Windowsμμ WinDbgλ₯Ό μ¬μ©νμ¬ λλ²κΉ νκ³ Ninjaλ₯Ό μ»΄νμΌνλ λ° μ¬μ©νλμ§ κΆκΈνλ€λ©΄. μ°Έκ³ λ‘ μμ€ μ»΄νμΌμ λ§€μ° μ½κ³ λλΌμΈ μ λλ‘ λΉ λ₯΄λ©° λ¨Όμ μ€ν¬λ¦½νΈμ μ 곡λ λ¬Έμλ₯Ό μ¬μ©νμ¬ μ»΄νμΌνμ΅λλ€. λ€μ ν λ², μκ³ νμ ¨μ΅λλ€!
@WolfieλλμΈκ° λΈλΌλ³΄! 보μμ κ³ λ €νλ€λ©΄ μμ κ° μ½κ° μ€ν΄μ μμ§κ° μλ€κ³ λ§ν΄μΌ ν©λλ€.
@Shufeng01 건배 μΉκ΅¬, .Net landμμ μ΄ μΆμμ μ€κ³ μμ΄μ μμ ν n00bμ²λΌ λκ»΄μ§λλ€. 보μμ΄ λ¬Έμ μλ€λ κ²μ λ§μ§λ§ webview μ체μμ disablewebsecurity νλκ·Έλ₯Ό μ¬μ©νλ©΄ λλΆλΆμ΄ ν΄κ²°λ©λλ€. μΌλ°μ μΌλ‘ 보μμ μΉμ λ°μ€ν¬ν±μΌλ‘ κ°μ Έμ€λ λ° μμ΄ κ°μ₯ ν° λμ κ³Όμ λΌκ³ μκ°ν©λλ€. νμ§λ§ κ·Έλ§ν κ°μΉκ° μμ΅λλ€. μ μ λ°μ.
@diimdeep κ°μ¬ν©λλ€. μ루μ μ΄ μ μκ² ν¨κ³Όμ μ λλ€( @WolfieWerewolf κ° μνλ κ²μ΄
μ΄κ²μ μ°λ¦¬μκ² μ½κ°μ λ¬Έμ μ λλ€. μ°λ¦¬λ jqueryλ₯Ό μ± jsμ λ²λ€λ‘ λ¬Άκ³ μ΄ μ°κ²°λ JSλ μΉ λ° λ°μ€ν¬ν± λ²μ λͺ¨λμ λν λΉλμ μ¬μ©λ©λλ€(μ ν¬λ NWJSλ₯Ό μ¬μ©νμ΅λλ€). NPM μ€μΉλ μ°λ¦¬μκ² μ΅μ μΌ μ μμ§λ§ λͺ κ°μ§ μ΄μ λ‘ μ°λ¦¬ μν©μμλ μ΄μμ μ΄μ§ μμ΅λλ€.
μ€ν¬λ¦½νΈ νκ·Έλ₯Ό μ¬μ©νμ¬ μλνκ² νλ μ΄λ‘ μ λ°©λ²μ΄ μλμ?
@bgSosh , λ
Έλ ν΅ν©μ λΉνμ±ννμ§ μλ μ΄μ λ 무μμ
λκΉ( μ¬κΈ° μμ node-integration
ν€μ λν΄ μ½μΌ μμμ€ )? κ·Έλ κ² νλ©΄ μ€ν¬λ¦½νΈ νκ·Έκ° μ¬λ°λ₯΄κ² μλν΄μΌ ν©λλ€. λ
Έλ κ΄λ ¨ νλͺ©μ΄ νμν κ²½μ° preload
μ€ν¬λ¦½νΈμμ μ΄λ₯Ό μνν μ μμ΅λλ€(νμ λ
Έλ ν΅ν©μ΄ μμ).
@etiktin μ¬μ λ‘λμμ μ΄ μμ μ μννλ λ°©λ²μ μμΈν μ€λͺ ν΄ μ£Όμκ² μ΅λκΉ? μ λ μ μλ₯Ό μ²μ μ νκ³ μ€νν μ¬μ λ‘λ μ€ν¬λ¦½νΈλ₯Ό κ΄λ¦¬νμ§ λͺ»νμ΅λλ€(μ μ΄λ μ€νλμ§ μλ κ²μΌλ‘ 보μ΄κ³ , console.logκ° μλνμ§ μκ³ , μλ₯Ό λ€μ΄ window.myExposedIPC = require('ipc') λ³κ²½μ λμ€μ μ¬μ©ν μ μμ΅λλ€.
λκ΅°κ° λμΌν λ¬Έμ κ° μλ κ²½μ°λ₯Ό λλΉνμ¬ μλνλλ‘ νμ΅λλ€: https://github.com/atom/electron/issues/1753#issuecomment -157409572
@matthiasg μλνκ² λμ΄ κΈ°μ©λλ€. κ·νμ μμ λͺ κ°μ§ μ견μ μΆκ°νμ΅λλ€.
λ Έλ ν΅ν©μ΄ λΉνμ±νλμ΄ μκ³ μ¬μ λ‘λ μ€ν¬λ¦½νΈμμ μΌλΆ λ Έλ μμ μ μννλ €λ κ²½μ° νμν λ Έλ μ μμ λν μ°Έμ‘°λ₯Ό μ μ§νλ κ²μ΄ μ€μν©λλ€. λ€μ ν±μμ μ μ μ°Έμ‘°κ° μμ λκΈ° λλ¬Έμ(λ Έλ ν΅ν© λΉνμ±νκ° κ΅¬νλλ λ°©μμ΄λ―λ‘) μ΄ μμ μ μνν΄μΌ ν©λλ€. λ°λΌμ μ°Έμ‘°λ₯Ό 보μ νμ§ μκ³ ν¨μ νΈμΆμ΄λ νμ΄λ¨Έμ λν΄ λ¬΄μΈκ°λ₯Ό μꡬνλ €κ³ νλ©΄ , μ€ν¨ν©λλ€.
@etiktin κ°μ¬ν©λλ€. λ¬Όλ‘ κ·Έκ²μ μΌλΆμμ§λ§ λ΄κ° λλ½λ κ²μ process.once('loaded', ... )
λ¬Έμκ° μ μ리μ μμΌλ©΄ μ€μ λ‘ λ΄κ° μνλ APIλ₯Ό λ
ΈμΆν μ μλ€λ κ²μ
λλ€.
μλ νμΈμ μ¬λ¬λΆ,
μμ μ΄λ κ²λ λλ₯Ό μν΄ μΌνμ§ μμκΈ° λλ¬Έμ(w2uiμ JQueryλ₯Ό μ μ λ° λ 립 HTML νμ΄μ§μ ν¨κ» μ¬μ©νκ³ w2uiλ jQueryλ₯Ό μ¬μ©νκ² ν¨) μ¬κΈ°μ λ΄ μμ μ루μ μ κ²μν΄μΌ ν νμμ±μ λκΌμ΅λλ€.
<html>
<head>
<title>MyApp</title>
<link rel="stylesheet" type="text/css" href="./lib/w2ui-1.4.3.css"/>
<script type="text/javascript" src="./lib/require.js"></script>
<script type="text/javascript" src="./lib/jquery-2.1.4.js" onload="$ = jQuery = module.exports;"></script>
<script type="text/javascript" src="./lib/w2ui-1.4.3.js"></script>
</head>
<body>
<script type="text/javascript">
// use global $ and w2ui here...
...
μ λ JSλ₯Ό μ²μ μ νκ³ κΈ°μ μ°κ΅¬λ₯Ό μννκ³ μμΌλ©° μ΄μ μ΄ λͺ¨νΈν λͺ¨λ λ‘λ©μ λν΄ μ½κ° κ±±μ νκ³ μμ΅λλ€. μ΄λ¦¬μμ μ§λ¬ΈμΌ μ μμ§λ§ HTML νμ΄μ§λ₯Ό λ‘λν λ μ μκ° JS λͺ¨λμ μΌλ° λΈλΌμ°μ μ λ€λ₯΄κ² λ‘λνλ μ΄μ λ 무μμ λκΉ?
@forman λ Έλ ν΅ν©μ λΉνμ±ννκ³ λ Έλ μνΈ μμ©μ μν΄ μ¬μ λ‘λ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ΅λκΉ? μ μ @matthiasgμ μ λκΈμ μ°Έμ‘°νμΈμ. κ·Έλ κ² νλ©΄ jqueryμ λλ¨Έμ§λ λΈλΌμ°μ μμμ λκ°μ΄ μλν©λλ€.
μλν©λλ€
requirejs(['require', '../require.config'], function (requirejs, config) {
//fixed jQuery isn't set globally
requirejs(['jquery'],function(jquery){
window.$ = window.jQuery =jquery;
});
// update global require config
window.requirejs.config(config);
// load app
requirejs(['main'],function(main){
});
});
@forman κ°μ¬ν©λλ€!! κ·νμ μ루μ
μ μ μΈνκ³ μμ μ΄λ κ²λ μλνμ§ μμμ΅λλ€. (μ μ λ΄μ₯ 0.35.5 μ¬μ©)
@etiktin μ΄κ²μ mainProcess μΈ‘μμ μ무 κ²λ λ³κ²½νμ§ μκ³ λ λλ₯Ό μν΄ μΌνμ΅λλ€.
λμ€μ μ°Έμ‘°ν μ μλλ‘ μ΄ μ€λ λμ λ¬Έμ μ μ루μ μ μΆκ°ν΄μΌ νλ€κ³ μκ°νμ΅λλ€.
μ°λ¦¬λ μΉλ·°μμ μΈλΆ URLμ λ‘λνκ³ μμΌλ©° μ μ/λ Έλλ₯Ό μ¬μ©ν μ μλ μ체 μλ°μ€ν¬λ¦½νΈλ₯Ό μ€νν΄μΌ ν©λλ€. webviewμμ nodeintegrationμ νμ±ννλ©΄ μΈλΆ URLμμ μ¬μ© μ€μΈ jQueryκ° μ€λ¨λλ―λ‘ μ΅μ μ΄ μλλλ€.
μ°λ¦¬κ° ν μΌμ μ°λ¦¬κ° νμν λͺ¨λμ μ μ λ²μμ λ£λ μΉλ·°μ μ¬μ λ‘λ μ€ν¬λ¦½νΈλ₯Ό μΆκ°νλ κ²μ΄μμ΅λλ€. μ΄λ κ² νλ©΄ λμ€μ Javascriptλ₯Ό μ€νν λ μ‘μΈμ€ν μ μμ΅λλ€.
preload.js:
global.ipcRenderer = require('electron').ipcRenderer;
κ·Έλ¦¬κ³ λ€μκ³Ό κ°μ΄ ipcRendererμ μ‘μΈμ€ν μ μμ΅λλ€.
webview.executeJavaScript("ipcRenderer.sendToHost('hello');");
Uncaught Error: Cannot find module 'jquery'
λ° μ΄ μ€λ λμμ μ무 λμλ λμ§ μμ =/
module
μ€μ μ ν΄μ νλ©΄ λ©λλ€.
λ΄ μΉ νμ΄μ§κ° λΈλΌμ°μ μ μ μ λͺ¨λμμ μλνλλ‘ νκ³ μΆμμ΅λλ€.
μ΄ κΈμμ μ€λͺ
ν λ°μ κ°μ΄, μ μλ€μ κ³΅κ° κΈλ‘λ² module
κ²½μ° nodeIntegration: true
JQueryμ κ·Έμ λ°λΌλ³΄κ³ λ°μνμ¬ :
if ( typeof module === "object" && typeof module.exports === "object" ) {
// bind to module
} else {
// bind to window
}
jQueryλ₯Ό window
κ°μ²΄μ λ°μΈλ©νκ³ html νμΌμμ λ€μμ μννμ¬ nodeIntegration: true
λ₯Ό μ¬μ©ν μ μμμ΅λλ€.
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="//code.highcharts.com/highcharts.js"></script>
<script>if (window.module) module = window.module;</script>
μ΄κ²μ΄ λκ΅°κ°λ₯Ό λκΈ°λ₯Ό λ°λλλ€.
@tomkel μ λ λ€λ₯Έ μ루μ μ λλ€.
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script>window.jQuery = window.$ = module.exports;</script>
μ κ²½μ°μλ λ΄ μ ν리μΌμ΄μ μ μΉμ¬μ΄νΈμ Electron μ ν리μΌμ΄μ μΌλ‘ μ€νν μ μμ΄μΌ ν©λλ€. λ΄ μ루μ μ λ€μκ³Ό κ°μ΅λλ€.
<!-- Launched with Electron -->
<script>
if ('require' in window) {
window.$ = window.jQuery = require('jquery');
}
</script>
<!-- From CDN, Bower, etc... -->
<script src="https://code.jquery.com/jquery-2.2.0.js"></script>
<!-- Others libraries depending on jQuery -->
<script src="..."></script>
@dkfiresky μ, module
κ²½μ° μμ μ λ°°μΉνμ¬ μ μ¬ν μμ
μ μνν©λλ€. μ΄λ€ μ΄μ λ‘ λλ μ»μ μ μμμ΅λλ€
<script>window.Highcharts = module.exports;</script>
μΌνλ€. μ΄λ₯Ό λ°μνκΈ° μν΄ μ΄μ λκΈμ μ λ°μ΄νΈνμ΅λλ€.
@tomkel module
μΌμμ μΌλ‘ μ¨κΈ°λ μ루μ
μ μ μκ² λ§€μ° ν¨κ³Όμ μ
λλ€. λ΄ λ¬Έμ λ require('angular')
μ€ν¨ν CommonJS νκ²½μ μλ€κ³ κ°μ νκ³ ngDialogλ₯Ό μ¬μ©νμ¬ nw.jsμμ λ§μ΄κ·Έλ μ΄μ
νλ λμμ΄μκ³ μ체μ μΌλ‘ Angular λͺ¨λλ‘ λ±λ‘λμμ΅λλ€.
Electron 0.36.7μμλ λͺ¨λμ μ°Ύμ§ λͺ»νκΈ° λλ¬Έμ κ°λ¨ν window.$ = require('jquery');
λ₯Ό μνν μ μμ΅λλ€.λ λλ¬μ κΈ°λ³Έ νλ‘μΈμ€μ λμΌν λͺ¨λ ν΄μλ κ²½λ‘κ° μλ κ² κ°μ΅λλ€.
μ€μ λ‘ jQueryλ document
κ° μλ κΈ°λ³Έ νλ‘μΈμ€μμ μ€νλκΈ° λλ¬Έμ μλνμ§ μμ΅λλ€. κ·Έλ¦¬κ³ #4243κ³Ό κ°μ HTTPλ₯Ό ν΅ν΄ νμ΄μ§λ₯Ό μ 곡νκΈ° λλ¬Έμ require('jquery')
κ° μλνμ§ μμμ΅λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ€μκ³Ό κ°μ΄ λ©μΈ νλ‘μΈμ€μμ λ λλ¬ νλ‘μΈμ€λ‘ λͺ¨λ κ²½λ‘λ₯Ό μΆκ°νλ €κ³ νμ΅λλ€.
require('electron').remote.process.mainModule.paths.forEach(function(path) {
require('module').globalPaths.push(path);
});
κ·Έ νμλ λ¬Έμ μμ΄ require('jquery')
λ₯Ό ν μ μμ΅λλ€. μ΄κ²μ΄ λ€λ₯Έ μν₯μ λ―ΈμΉ μ μλμ§ νμ€νμ§ μμ΅λλ€.
κ·Έλ¦¬κ³ #4243κ³Ό κ°μ HTTPλ₯Ό ν΅ν΄ νμ΄μ§λ₯Ό μ 곡νκΈ° λλ¬Έμ require('jquery')κ° μλνμ§ μμμ΅λλ€.
μ격 μ½ν μΈ κ° node.jsμ μ‘μΈμ€νλλ‘ νμ©νλ κ²½μ° μ±μ΄ λ§€μ° μμ νμ§ μμ΅λλ€. μ격 μ½ν μΈ λ₯Ό μ€νν λ λ Έλ ν΅ν©μ λΉνμ±ννκ³ μ¬μ λ‘λ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
"μ격 μ½ν μΈ "κ° localhostμΈ κ²½μ°μλ? λ‘컬 νμΌμμ μ½λ λμ λ Έλλ₯Ό μ¬μ©νμ¬ νμ΄μ§λ₯Ό λΉλνκ³ μ 곡ν©λλ€. κ·Έκ² μ λΆμ λλ€.
@dkfiresky μμ νμ₯νλ©΄ λΈλΌμ°μ λ²μ μμ Uncaught ReferenceError: module is not defined
λ₯Ό μ»μ μ μμ΅λλ€.
κ·Έλ λ€λ©΄ λ€μμ μλνμμμ€.
<script src="./bower_components/jquery/dist/jquery.min.js"></script>
<script>window.jQuery = window.$ = typeof module === 'object' ? module.exports : jQuery</script>
@dspint module
λ λ
Έλ ν΅ν©μ΄ λΉνμ±νλ κ²½μ°μλ§ μ μλμ§ μμΌλ―λ‘ λ
Έλ ν΅ν©μ΄ νμ±νλ μνμμλ§ μ μμ λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
window.open
μ¬μ©νλ κ²½μ° μ°½ μ΅μ
κ³Ό ν¨κ» nodeIntegration=0
λ₯Ό μ λ¬ν μ μμ΅λλ€.
window.open('https://your.cool/url', 'title', 'nodeIntegration=0');
λλ μΌμ ν΄μ:
<script>
var saveModule = module;
delete module;
</script>
<script src="jquery.js"></script>
<script src="jquery-ui.js"></script>
<script>
module = saveModule;
</script>
@gnailκ³Ό κ°μ λ¬Έμ κ° μμμ΅λλ€. κ°λ νλ‘μ νΈλ₯Ό μ€ννλ λ Έλ μλ²κ° μμμ΅λλ€. κ·Έμ μ½λκ° λλ₯Ό μν΄ κ·Έκ²μ κ³ μ³€λ€.
require('electron').remote.process.mainModule.paths.forEach(function(path) {
require('module').globalPaths.push(path);
});
κ·Έκ²μ λλ₯Ό μν΄ μΌνκ³ μμ΅λλ€ π
<script>
window['old_module'] = window['module'];
delete window.module;
</script>
<script src="any_lib_like_jquery.js" />
<script>
window['module'] = window['old_module'];
delete window.old_module;
</script>
μ΄ λ¬Έμ κ° μμ΅λλ€. μ΄λ―Έ μ΄ μ€λ λλ₯Ό λͺ¨λ μλνμ΅λλ€. νμ§λ§ μ무κ²λ μλνμ§ μμ΅λλ€.
λͺ¨λ .
λλ μ μ μ€νν° λ΄λΉμλ₯Ό μ¬μ©νκ³ μμ΅λλ€
@PauloGaldo κΈ°λ³Έμ μΌλ‘ μ΄ μ€λ λμ λͺ¨λ μ루μ μ΄ μλν΄μΌ ν©λλ€. μ½λμ κ΄λ ¨ λ°μ·λ¬Έκ³Ό λ°μν λͺ¨λ μ€λ₯ λ©μμ§λ₯Ό κ²μνμμμ€.
@ChiperSoft μ½λλ₯Ό μ΄λμ μ¬μ©ν΄μΌ νλμ§ μλ €
@tomkel μμ£Ό μ’μμ!
λ§μΉ¨λ΄ Masonryκ° Electronμμ μΌνκ² λμμ΅λλ€!
μ΄λ€ μ΄μ λ‘ λΈλΌμ°μ μ Electron μ±μμ jQueryκ° μλνλλ‘ ν μ μμ΅λλ€.
λ΄ μΉ μ±μ λΈλΌμ°μ μμ μ λλ‘ μλνμ§λ§ μ μ μ±μ ν΅ν΄ λμΌν URLμ λ‘λνλ €κ³ ν λ λ°μν©λλ€.
μΉμ± - https://github.com/zulip/zulip
μ μ μ± - https://github.com/zulip/zulip-electron
webappμ npmμ ν΅ν΄ jquery 1.12.1 λ²μ μ μ¬μ©νκ³ μμ΅λλ€.
λ λλ¬ νλ‘μΈμ€μ νμνκΈ° λλ¬Έμ nodeintegration offλ₯Ό μ¬μ©ν μ μμ΅λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° μ΄λ €μμ κ²ͺκ³ μμ΅λλ€. μ무λ κ·Έκ²μ μλμν€λ λ°©λ²μ μκ³ μμ΅λκΉ?
cc @aaaaahaaaaa @maykefreitas @paulcbetts @tomkel @dkfiresky
@englishextra μ΄μ΄ μμ΅λλ€. λ΄ μ±μ preload.jsμ μ½λλ₯Ό ν¬ν¨νλ €κ³ νμ§λ§ λμΌν μ€λ₯κ° λ°μνμ΅λλ€.
Aurelia νλ μμν¬λ₯Ό μ¬μ©νλ μ¬λλ€μ μν΄:
https://github.com/aurelia/skeleton-navigation/pull/675/commits/6292e698dcb8f383afc748aa7c8a50e540dfbe2e
λλ μ΄κ²μΌλ‘μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ€.
<script type="text/javascript" src="js/jquery.min.js" onload="window.$ = window.jQuery;"></script>
κ·Έλ¦¬κ³ μ€μ
webPreferences: {
nodeIntegration: false,
}
nodeIntegration: true,
imorot jQueryλ₯Ό μ¬μ©νλ κ²½μ° μ΄μ κ°μ΄
<script type="text/javascript" src="js/jquery.min.js" onload="window.$ = window.jQuery = module.exports;"></script>
λ΄ λ§μ, λμ λ¬Έμ μΈ κ² κ°μΌλ μ€μ Electronμ ν¬ν¨μν€μ§ μκ² λκ°? μ£Όμ JavaScript λΌμ΄λΈλ¬λ¦¬λ₯Ό Electronμ ν΅ν©ν μ μμ΅λκΉ?
Electron μ±μμ jQueryλ₯Ό μ¬μ©νλ κ²½μ° λ§€μ° μλͺ»λμκ±°λ μ΅μν λΉν¨μ¨μ μΈ μΌμ νκ³ μμ κ°λ₯μ±μ΄ μμ΅λλ€.
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script>if (typeof module === 'object') {window.jQuery = window.$ = module.exports;};</script>
@drowlands Electronμ νμ¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν¬ν¨νλ κ²μ λμ μκ°μΈ κ² κ°μ΅λλ€. μλ₯Ό λ€μ΄ μ
λ°μ΄νΈ 루ν΄μ΄λ λ²μ μ νμ μμν΄ λ³΄μμμ€.
@amhoho require
jQueryκ° νμνκ±°λ μ΅μμ ν¨μμμ μ΄κΈ°ν μ½λλ₯Ό μμ ν΄μΌ νκΈ° λλ¬Έμ
λλ€. factory( global );
λ§ λ¨κΉλλ€.
μ¬κΈ°:
( function( global, factory ) {
"use strict";
if ( typeof module === "object" && typeof module.exports === "object" ) {
// For CommonJS and CommonJS-like environments where a proper `window`
// is present, execute the factory and get jQuery.
// For environments that do not have a `window` with a `document`
// (such as Node.js), expose a factory as module.exports.
// This accentuates the need for the creation of a real `window`.
// e.g. var jQuery = require("jquery")(window);
// See ticket #14549 for more info.
module.exports = global.document ?
factory( global, true ) :
function( w ) {
if ( !w.document ) {
throw new Error( "jQuery requires a window with a document" );
}
return factory( w );
};
} else {
factory( global );
}
μ κ²½μ°μλ fetch/Promise λλ xhrμ ν΅ν΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ‘λνλ―λ‘ κ³΅κΈμ
체μ λΌμ΄λΈλ¬λ¦¬μμ λͺ¨λ κ²μ¬λ₯Ό μ κ±°νλ μ΄ λ£¨ν΄μ΄ μμ΅λλ€.
@RRorg λ¬΄μ¨ λ§μ νλμ§ μ΄μν΄
νμ
@kabalage μ κ²μλ¬Όμ ꡬμ±μ΄
const window = new BrowserWindow({
webPreferences: {
nodeIntegration: false,
},
});
곡μ λ¬Έμ:
https://electronjs.org/docs/faq#i -can-not-use-jqueryrequirejsmeteorangularjs-in-electron
```
λλ μ μ
TypeError: Cannot read property 'createElement' of undefined
μΉλ·°μμ.
μ¬μ λ‘λ μ€ν¬λ¦½νΈλ
const path = require('path');
const {ipcRenderer} = require('electron')
const fs = require('fs');
window.$ = window.jQuery = require(path.join(__dirname, '../jquery.min.js'))
μ΄ μ½λλ₯Ό μ¬μ©νλ©΄ μ μλν©λλ€.
κ·Έλ¬λ μ€λ₯Έμͺ½ μλ¨ λ²νΌμ ν΄λ¦νμ¬ λΈλΌμ°μ μ°½μ λ«μ μ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
module
μ€μ μ ν΄μ νλ©΄ λ©λλ€.λ΄ μΉ νμ΄μ§κ° λΈλΌμ°μ μ μ μ λͺ¨λμμ μλνλλ‘ νκ³ μΆμμ΅λλ€.
μ΄ κΈμμ μ€λͺ ν λ°μ κ°μ΄, μ μλ€μ κ³΅κ° κΈλ‘λ²
module
κ²½μ°nodeIntegration: true
JQueryμ κ·Έμ λ°λΌλ³΄κ³ λ°μνμ¬ :jQueryλ₯Ό
window
κ°μ²΄μ λ°μΈλ©νκ³ html νμΌμμ λ€μμ μννμ¬nodeIntegration: true
λ₯Ό μ¬μ©ν μ μμμ΅λλ€.μ΄κ²μ΄ λκ΅°κ°λ₯Ό λκΈ°λ₯Ό λ°λλλ€.