跳至主要内容

Replace ng-annotate with babel-plugin-angularjs-annotate

Replace ng-annotate with babel-plugin-angularjs-annotate

ng-annotate was deprecated, the successor is babel-plugin-angularjs-annotate.
More details, please read this post.
babel-plugin-angularjs-annotate is a standard Babel plugin.
Install babel-plugin-angularjs-annotate.
npm install babel-plugin-angularjs-annotate --save-dev
It is easy to configure it in the babel configuration file, there is a .babelrc file located in the project root folder.
{
  "plugins": ["transform-runtime", ["angularjs-annotate", { "explicitOnly" : true}]],
  "presets": ["es2015", "stage-0"]
}
The explicitOnly option force you to use ngInject or /*@ngInject*/ to handle the dependency injection.
I have used ngInject in all of the smaple codes to process dependency injection explicitly, there is no need to change the codes.
In the former codes, I configured a webpack loader named ng-annotate-loader to process ngInject via ng-annotate in webpack.conf file, it is no use and can be removed now.
Remove ng-annotate-loader.
npm uninstall ng-annotate-loader --save-dev
And remove it from webpack configuration.
//webpack.conf
 { test: /\.js$/, exclude: [/app\/lib/, /node_modules/], loader: 'babel' },
 ...
Run the codes, it should work as before.
$ npm run start                                                                      
                                                                                        
> ng6-starter@0.0.1 start E:\hantsylabs\angular-es6-sample                           
> gulp serve                                                                         
                     
[22:51:58] Requiring external module babel-register                                  
[22:52:02] Using gulpfile E:\hantsylabs\angular-es6-sample\gulpfile.babel.js         
[22:52:02] Starting 'serve'...                                                       
[22:52:04] Finished 'serve' after 1.36 s                                             
[BS] Access URLs:                                                                    
-------------------------------------                                               
   Local: http://localhost:3000                                                  
   External: http://192.168.56.1:3000                                               
-------------------------------------                                               
   UI: http://localhost:3001                                                  
UI External: http://192.168.56.1:3001                                               
-------------------------------------                                               
[BS] Serving files from: client                                                      
webpack: wait until bundle finished: /index.html                                     
webpack built a539378083e795ec5876 in 39091ms                                        
Hash: a539378083e795ec5876                                                           
Version: webpack 1.14.0                                                              
Time: 39091ms                                                                        
         Asset     Size  Chunks             Chunk Names        
674f50d287a8c48dc19ba404d20fe713.eot   166 kB          [emitted]                     
b06871f281fee6b241d60582ae9369b9.ttf   166 kB          [emitted]                     
912ec66d7572ff821749319396470bde.svg   444 kB          [emitted]                     
       app.bundle.js   102 kB       0  [emitted]  app                
       vendor.bundle.js   4.5 MB       1  [emitted]  vendor             
      app.bundle.js.map   117 kB       0  [emitted]  app                
      vendor.bundle.js.map  5.29 MB       1  [emitted]  vendor             
       index.html  1.28 kB          [emitted]                     
webpack: bundle is now VALID.     

评论

此博客中的热门博文

Build a Reactive application with Angular 5 and Spring Boot 2.0

I have created a post to describe Reactive programming supports in Spring 5 and its subprojects, all codes of this article are updated the latest Spring 5 RELEASE, check spring-reactive-sample under my Github account.
In this post, I will create a simple blog system, including:
A user can sign in and sign out.An authenticated user can create a post.An authenticated user can update a post.Only the user who has ADMIN role can delete a post.All users(including anonymous users) can view post list and post details.An authenticated user can add his comments to a certain post. The backend will be built with the latest Spring 5 reactive stack, including:
Spring Boot 2.0, at the moment the latest version is 2.0.0.M7Spring Data MongoDB supports reactive operations for MongoDBSpring Session adds reactive support for WebSessionSpring Security 5 aligns with Spring 5 reactive stack The frontend is an Angular based SPA and it will be generated by Angular CLI.
The source code is hosted on Github, …

Activating CDI in JSF 2.3

Activating CDI in JSF 2.3 When I upgraed my Java EE 7 sample to the newest Java EE 8, the first thing confused me is the CDI beans are not recoganized in Facelects template in a JSF 2.3 based web applicaiton, which is working in the development version, but in the final release version, they are always resolved as null. I filed an issue on Mojarra and discussed it with the developers from communities and the JSF experts.
According to the content of README, In a JSF 2.3 application, to activate CDI support, declaring a 2.3 versioned faces-config.xml and adding javax.faces.ENABLE_CDI_RESOLVER_CHAIN in web.xml is not enough, you have to declare @FacesConfig annotated class to enable CDI.
Here is the steps I created a workable JSF 2.3 applicatoin in Java EE 8.
Create a Java web application, this can be done easily by NetBeans IDE, or generated by Maven archetype, for exmaple.
$ mvn archetype:generate -DgroupId=com.example -DartifactId=demo -DarchetypeArtifactId=maven-archetype-w…

JPA 2.1: Attribute Converter

JPA 2.1: Attribute Converter If you are using Hibernate, and want a customized type is supported in your Entity class, you could have to write a custom Hibernate Type. JPA 2.1 brings a new feature named attribute converter, which can help you convert your custom class type to JPA supported type. Create an Entity Reuse thePostentity class as example. @Entity @Table(name="POSTS") public class Post implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="ID") private Long id; @Column(name="TITLE") private String title; @Column(name="BODY") private String body; @Temporal(javax.persistence.TemporalType.DATE) @Column(name="CREATED") private Date created; @Column(name="TAGS") private List<String> tags=new ArrayList<>(); } Create an attribute converter In this example…