I'm trying to use Vuelidate without a build tool. The docs say that there's a version that can be directly consumed from the browser (access to it is done through a couple of global objects), but I'm wondering if there are es module versions of those files.
Thanks.
Related
I have an app that includes some native code. In an effort to make things easy for users to install and run, I have been extending the private field ClassLoader.sys_paths at runtime as described in this previous question: Adding new paths for native libraries at runtime in Java. With this hack the app can run with a simple unadorned java -jar app.jar command and the native objects will be located correctly in the installation directory.
This technique no longer works in Java 9 (see How to solve InaccessibleObjectException ("Unable to make {member} accessible: module {A} does not 'opens {package}' to {B}") on Java 9?). This article describes the changes to Java 9 and suggests a solution (adding arguments to the command line to open the module), but this defeats my original intent of allowing a simple execution of the java command.
Is there any way to change the native library search path at runtime, or is this considered too much of a loaded gun to leave lying around?
I am configuring grunt for SAPUI5 project. I can configure grunt taks for minify, test and etc. I see there is grunt-ui5 grunt plugin but I am not able to understand what exactly this plugin is doing or useful to SAPUI5 projects.
Thanks
The grunt-openui5 plugin by SAP is documented at github.
It can be used to build UI5 themes and package components and libraries into preload-files.
UI5 tries to load most of the modules of a component or library with a single request from a component-preload.json / library-preload.json file. If it cannot find a preload file, it has to request all modules individually resulting in many many requests and thus poor performance.
grunt-openui5 is used to create these preload files. It also minifies the code while doing so.
The grunt-ui5 plugin is something inofficial which seems to do similar things. You would have to ask the author directly to get more information. I recommend to use the official grunt-openui5 plugin.
For ui5 applications it's not common to use the grunt task for minification , instead we use the grunt-openui5 task. It will create the preload file, which is a json object that contains the whole app.
{
"version":"0.0",
"name":"app name",
"modules":[
"control1": "code for control1",
"control2": "code for control1",
]}
When control1 is required, ui5 just uses the preload to get the code for control1. In this way, ui5 avoids triggering a new request. Anyway, If the preload file is not present, it will have to request control1.js .
If you want to see a real preload file, open any ui5 app and go to the network tab of the browser.
Using the grunt-openui5 plugin for grunt, it will do the work for you, and will give you as a result a library.css, rtl, library-parameters.json (same thing, but for themes) and the preload.json (for the js files).
Instead of using grunt-ui5, I would recommend you to use the the oficial plugin grunt-openui5!
grunt-openui5 is a really amazing grunt plugin created by bunch of SAPUI5 core dev team ;)
It mainly allow you to do 4 things:
create Component-preload.js (optimized and minified version of your app)
create library-preload.js (optimized and minified version of a custom library)
create a custom theme
create a local web server to test your app locally
I've covered it a little bit on my blog post Custom Control 101 if you want to check it out.
I'm using it in daily basis and you can read some of my blog posts about it.
Just a small remark: in the future, consider switching from grunt to gulp, as gulp is newer and faster. For SAPUI5 there are packages with same functionality in gulp, as ingrunt.
I've got an app that consists of a shell app which loads in other modules. As I've made changes and put them on the web of course others on the team haven't seen updates because of older versions they've cached.
Now of course a simple fix is to change the directory I'm uploading to and symbolically linking to that file, but I thought I could get around this by custom compiler arguments...
I've been getting around the caching of the external modules by appending a random number to the url of the module to be loaded by the shell (ie loadModule(blah/blah.swf?123). But this also means that the modules get pulled everytime; that's not needed. I then created a VERSION string in the main app that I change when the modules need to be pulled (ie loadModule(module.swf?+VERSION). That works for the modules but not the main app.
I'm thinking that if I can add some sort of VERSION to the compiler - the Consts I suppose - then I could also use that CONST to compile the file with shell_{CONST}.swf (ie shell_203.swf) and make sure that the htmlTemplate ALSO embeds this versioned file...
Suggestions?
I'm developing a module based applications in Flex and I was thinking about moving all my Value Objects (VOs) into a library project and I was wondering if any thinks this is a bad idea or have any alternative suggestions.
Current Structure:
I have a project that consist of a shell application and 3 modules. The modules contain about 10 custom components in each that are dynamically loaded at run time. My problem is component A ( in module A) needs to pass data to component B (in module B). So when this happens I move the VO that component A was using to a common folder. I then pass the VO and have component B pick that up and do what ever it needs to do with it.
So what I was thinking was using an existing library project and adding all my VOs to it. This way I'll never have to move a VO from the module to a common folder so both module A and module B can access it. The basic idea is I want to be able to complete abstract any module from shell into its own widget or Air app with out depending on any other modules.
Does anyone think this is bad practice? If so, why? and do you have any alternatives?
Thanks!
Your approach makes sense and is more or less what the library projects were designed for. You can compile the SWC directly into your main application SWF or even externalize the library as a RSL. Unless you have a lot of VO's (hundreds) it will probably make more sense to compile them directly into the main SWF.
I tend to skip the whole VO system and use native objects (Object). It's not quite as self-documenting, but it is more convenient and portable. And you can easily serialize it with the JSON library. Probably doesn't at all help you with your problem though.
I'm looking to have a couple of plugins in a Flex project I'm working on. I know I can load a SWF using the SWFLoader, but I thought in Flex3 you can now have Runtime Shared Libraries or something. Does anyone have any good documentation on loading a plugin at runtime? Ideally I'd like to be able to load a plugin from a URL, then execute some code from within the plugin (e.g. add a control to the page).
You can use either Modules or RSL.
RSLs have the advantage of getting cached by flash rather than the browser so they stick around longer.
Modules are easier to create and use. I have used modules and had issues with modules failing to load (code needs to handle that case). I haven't tried RSLs yet.
Here is some documentation on creating RSLs http://labs.adobe.com/wiki/index.php/Flex_3:Feature_Introductions:Flex_3_RSLs
Note that, currently, loaded RSLs must be compiled against the very same version of the Flex framework.. if you plan for a "binary" plugin system, probably you want to wait for the Marshall plan feature to be implemented, in the next Flex version.
If you want to try a new and alternative approach, this is a application core framework modelled after java OSGi: http://www.potomacframework.org/
I haven't tried it myself, but it looks really cool!