| 
									
										
										
										
											2016-05-28 19:32:30 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | Modules and RequireJS | 
					
						
							|  |  |  | ===================== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Most of the system is loaded via browser context RequireJS loader, in  | 
					
						
							| 
									
										
										
										
											2020-08-31 17:37:06 +03:00
										 |  |  | node/electron/nw context node-specific stuff is loaded with a second  | 
					
						
							|  |  |  | node-enabled RequireJS instance or node require. | 
					
						
							| 
									
										
										
										
											2016-05-28 19:32:30 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-04 05:11:14 +03:00
										 |  |  | The ideal solution would be to use one require that sees both the browser | 
					
						
							|  |  |  | and node contexts, the problem is exactly in this, the browser requirejs | 
					
						
							|  |  |  | does not see either node or node modules while the node require loads code | 
					
						
							|  |  |  | that is not visible to devtools unless it is running at that exact moment. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Thus we are forced to use both mode requirejs loaders which may be  | 
					
						
							|  |  |  | confusing at times. | 
					
						
							| 
									
										
										
										
											2016-05-28 19:32:30 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-31 17:37:06 +03:00
										 |  |  | Different loaders | 
					
						
							|  |  |  | ----------------- | 
					
						
							| 
									
										
										
										
											2016-05-28 19:32:30 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | There are two RequireJS instances present in most contexts in nw.js  | 
					
						
							|  |  |  | within the define(..) runner: | 
					
						
							|  |  |  | 	- require(..)		 | 
					
						
							|  |  |  | 		Pure browser RequireJS instance, used to load local  | 
					
						
							|  |  |  | 		modules. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	- requirejs(..)		 | 
					
						
							|  |  |  | 		Node-enabled RequireJS instance, used to load node  | 
					
						
							|  |  |  | 		modules. | 
					
						
							|  |  |  | 		This is needed as the above require(..) overloads the  | 
					
						
							|  |  |  | 		node native loader. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-31 17:37:06 +03:00
										 |  |  | The future | 
					
						
							|  |  |  | ---------- | 
					
						
							| 
									
										
										
										
											2016-05-28 19:32:30 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | This seems a bit confusing, so at least the naming convention should be | 
					
						
							|  |  |  | revised. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-11 06:24:22 +03:00
										 |  |  | Entry points | 
					
						
							|  |  |  | ============ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The current state of things is far from optimal -- we have "three"  | 
					
						
							|  |  |  | "different" entry points: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	- index.html			- Browser | 
					
						
							|  |  |  | 	- e.js				- electron | 
					
						
							|  |  |  | 		-> electron.html	- electron-specific html | 
					
						
							|  |  |  | 	- ig.js				- node | 
					
						
							|  |  |  | 		-> e.js			- node can spawn an electron app | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The goal is to simplify this by merging the electron/node entry points  | 
					
						
							|  |  |  | and merging the html files into one. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 |