+ [loader] can require a external css file in .we file
diff --git a/weex-loader/index.js b/weex-loader/index.js
index c9ec386..26f7758 100644
--- a/weex-loader/index.js
+++ b/weex-loader/index.js
@@ -179,11 +179,13 @@
         }
 
         if (template) {
-            content += '\n;module.exports.template=' + template;
+            content += '\n;module.exports.template = module.exports.template || {}' + 
+                        '\n;Object.assign(module.exports.template, ' + template + ')';
         }
 
         if (style) {
-            content += '\n;module.exports.style=' + style;
+            content += '\n;module.exports.style = module.exports.style || {}' + 
+                        '\n;Object.assign(module.exports.style, ' + style + ')';
         }
 
         if (results.config) {
@@ -204,16 +206,20 @@
 function partedLoader(type, loader, params, source) {
     var promise;
     switch(type) {
+        case 'js':
         case 'script':
             var config = JSON.stringify({
                 transformerVersion: transformerVersion
             });
             promise = parseScript(loader, params, source, config);
             break;
+        case 'css':
         case 'style':
             promise = parseStyle(loader, params, source);
             break;
+        case 'html':
         case 'tpl':
+        case 'template':
             promise = parseTemplate(loader, params, source);
             break;
         case 'we':
@@ -238,7 +244,8 @@
     var promise = partedLoader(type, this, params, source);
 
     promise.then(function(result) {
-        if (type === 'style' || type === 'tpl' || type === 'template') {
+        if (type === 'style' || type === 'css' ||
+            type === 'html' || type === 'tpl' || type === 'template') {
             result = 'module.exports=' + result;
         }
         // console.log('\n[' + type + ', ' + params.resourcePath + ']\n', source, '\n=========>\n', result + '\n');
diff --git a/weex-loader/package.json b/weex-loader/package.json
index 3df3978..db18033 100644
--- a/weex-loader/package.json
+++ b/weex-loader/package.json
@@ -1,6 +1,6 @@
 {
   "name": "weex-loader",
-  "version": "0.1.3",
+  "version": "0.1.4",
   "description": "a webpack loader for weex",
   "main": "index.js",
   "author": "terrykingcha <terrykingcha@gmail.com>",
@@ -25,7 +25,7 @@
   "peerDependencies": {
     "weex-scripter": "^0.1.4",
     "weex-styler": "^0.0.17",
-    "weex-templater": "~0.2.1"
+    "weex-templater": "^0.2.1"
   },
   "devDependencies": {
     "babel-core": "^6.7.6",
diff --git a/weex-loader/test/a.js b/weex-loader/test/a.js
index 344bccb..b8f9f49 100644
--- a/weex-loader/test/a.js
+++ b/weex-loader/test/a.js
@@ -1,5 +1,5 @@
 require('./b?name=goto');
-require('./expect/copyright.we?name=copyright');
+require('./copyright.we?name=copyright');
 
 var c = require('./lib/c');
 
diff --git a/weex-loader/test/actual/a.js b/weex-loader/test/actual/a.js
index 2bae027..54970b2 100644
--- a/weex-loader/test/actual/a.js
+++ b/weex-loader/test/actual/a.js
@@ -44,13 +44,13 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	;__weex_define__("@weex-component/48c34d39ea9ced4ad5f95df361368f61", [], function(__weex_require__, __weex_exports__, __weex_module__){
+	;__weex_define__("@weex-component/50c4a966770a11c745d1edbe468d1d01", [], function(__weex_require__, __weex_exports__, __weex_module__){
 	'use strict';
 
 	__webpack_require__(1);
 	__webpack_require__(3);
 
-	var c = __webpack_require__(6);
+	var c = __webpack_require__(7);
 
 	__weex_module__.exports = {
 	    data: function () {return {
@@ -58,10 +58,10 @@
 	    }}
 	};
 
-	__weex_module__.exports.style = __webpack_require__(7);
-	__weex_module__.exports.template = __webpack_require__(8);
+	__weex_module__.exports.style = __webpack_require__(8);
+	__weex_module__.exports.template = __webpack_require__(9);
 	})
-	;__weex_bootstrap__("@weex-component/48c34d39ea9ced4ad5f95df361368f61", {"transformerVersion":"0.3.1"},undefined)
+	;__weex_bootstrap__("@weex-component/50c4a966770a11c745d1edbe468d1d01", {"transformerVersion":"0.3.1"},undefined)
 
 /***/ },
 /* 1 */
@@ -128,9 +128,10 @@
 /***/ function(module, exports, __webpack_require__) {
 
 	;__weex_define__("@weex-component/copyright", [], function(__weex_require__, __weex_exports__, __weex_module__){
-	__webpack_require__(4);
 
 	;
+	    __webpack_require__(4);
+
 	    __weex_module__.exports = {
 	        data: function () {return {
 	            className: ''
@@ -140,12 +141,15 @@
 	        }
 	    }
 
-	;__weex_module__.exports.template={
+	    __weex_module__.exports.style = __webpack_require__(6)
+
+	;__weex_module__.exports.template = __weex_module__.exports.template || {}
+	;Object.assign(__weex_module__.exports.template, {
 	  "type": "container",
 	  "children": [
 	    {
 	      "type": "text",
-	      "classList": function () {return [this.className]},
+	      "classList": function () {return [this.className, 'highlight']},
 	      "attr": {
 	        "value": "Copy right @ 2016 Weex"
 	      }
@@ -154,16 +158,15 @@
 	      "type": "company"
 	    }
 	  ]
-	}
-	;__weex_module__.exports.style={
+	})
+	;__weex_module__.exports.style = __weex_module__.exports.style || {}
+	;Object.assign(__weex_module__.exports.style, {
 	  "copyright": {
 	    "textAlign": "center",
 	    "paddingTop": 20,
-	    "paddingBottom": 20,
-	    "color": "#666666",
-	    "fontSize": 26
+	    "paddingBottom": 20
 	  }
-	}
+	})
 	})
 
 /***/ },
@@ -180,7 +183,8 @@
 	    }}
 	}
 
-	;__weex_module__.exports.template={
+	;__weex_module__.exports.template = __weex_module__.exports.template || {}
+	;Object.assign(__weex_module__.exports.template, {
 	  "type": "container",
 	  "children": [
 	    {
@@ -195,7 +199,7 @@
 	      }
 	    }
 	  ]
-	}
+	})
 	})
 
 /***/ },
@@ -208,12 +212,23 @@
 /* 6 */
 /***/ function(module, exports) {
 
-	exports.name = 'Weex-Loader';
+	module.exports={
+	  "highlight": {
+	    "color": "#666666",
+	    "fontSize": 26
+	  }
+	}
 
 /***/ },
 /* 7 */
 /***/ function(module, exports) {
 
+	exports.name = 'Weex-Loader';
+
+/***/ },
+/* 8 */
+/***/ function(module, exports) {
+
 	module.exports={
 	  "h1": {
 	    "fontSize": 60,
@@ -226,7 +241,7 @@
 	}
 
 /***/ },
-/* 8 */
+/* 9 */
 /***/ function(module, exports) {
 
 	module.exports={
diff --git a/weex-loader/test/actual/z.js b/weex-loader/test/actual/z.js
index 9e78aee..24dfa40 100644
--- a/weex-loader/test/actual/z.js
+++ b/weex-loader/test/actual/z.js
@@ -44,13 +44,14 @@
 /* 0 */
 /***/ function(module, exports) {
 
-	;__weex_define__("@weex-component/060e94206c8ea81edded49ff8b7ca324", [], function(__weex_require__, __weex_exports__, __weex_module__){
+	;__weex_define__("@weex-component/465f098187d45d0bb4e7c097ac00091e", [], function(__weex_require__, __weex_exports__, __weex_module__){
 
-	;__weex_module__.exports.template={
+	;__weex_module__.exports.template = __weex_module__.exports.template || {}
+	;Object.assign(__weex_module__.exports.template, {
 	  "type": "div"
-	}
 	})
-	;__weex_bootstrap__("@weex-component/060e94206c8ea81edded49ff8b7ca324", {
+	})
+	;__weex_bootstrap__("@weex-component/465f098187d45d0bb4e7c097ac00091e", {
 	  "downgrade": {
 	    "ios": {
 	      "appVersion": ">=13.0.0"
diff --git a/weex-loader/test/copyright.we b/weex-loader/test/copyright.we
new file mode 100644
index 0000000..0930225
--- /dev/null
+++ b/weex-loader/test/copyright.we
@@ -0,0 +1,29 @@
+<template>
+    <container>
+        <text class="{{className}} highlight">Copy right @ 2016 Weex</text>
+        <company></company>
+    </container>
+</template>
+
+<style>
+    .copyright {
+        text-align: center;
+        padding-top: 20;
+        padding-bottom: 20;
+    }
+</style>
+
+<script>
+    require('./expect/company.we');
+
+    module.exports = {
+        data: {
+            className: ''
+        },
+        created: function (argument) {
+            this.className = 'copyright';
+        }
+    }
+
+    module.exports.style = require('./highlight.css')
+</script>
\ No newline at end of file
diff --git a/weex-loader/test/expect/a.js b/weex-loader/test/expect/a.js
index 13b6c5e..91061e5 100644
--- a/weex-loader/test/expect/a.js
+++ b/weex-loader/test/expect/a.js
@@ -172,4 +172,4 @@
 ;})
 
 // require module
-bootstrap('@weex-component/a', {"transformerVersion":"0.3.0"})
\ No newline at end of file
+bootstrap('@weex-component/a', {"transformerVersion":"0.3.1"})
\ No newline at end of file
diff --git a/weex-loader/test/expect/company.js b/weex-loader/test/expect/company.js
index 9e14be8..685cacc 100644
--- a/weex-loader/test/expect/company.js
+++ b/weex-loader/test/expect/company.js
@@ -36,4 +36,4 @@
 ;})
 
 // require module
-bootstrap('@weex-component/company', {"transformerVersion":"0.3.0"})
\ No newline at end of file
+bootstrap('@weex-component/company', {"transformerVersion":"0.3.1"})
\ No newline at end of file
diff --git a/weex-loader/test/expect/copyright.js b/weex-loader/test/expect/copyright.js
index a7b886c..ba27cf3 100644
--- a/weex-loader/test/expect/copyright.js
+++ b/weex-loader/test/expect/copyright.js
@@ -79,4 +79,4 @@
 ;})
 
 // require module
-bootstrap('@weex-component/copyright', {"transformerVersion":"0.3.0"})
\ No newline at end of file
+bootstrap('@weex-component/copyright', {"transformerVersion":"0.3.1"})
\ No newline at end of file
diff --git a/weex-loader/test/expect/goto.js b/weex-loader/test/expect/goto.js
index d1a40f6..1878578 100644
--- a/weex-loader/test/expect/goto.js
+++ b/weex-loader/test/expect/goto.js
@@ -41,4 +41,4 @@
 ;})
 
 // require module
-bootstrap('@weex-component/goto', {"transformerVersion":"0.3.0"})
\ No newline at end of file
+bootstrap('@weex-component/goto', {"transformerVersion":"0.3.1"})
\ No newline at end of file
diff --git a/weex-loader/test/expect/z.js b/weex-loader/test/expect/z.js
index 501df2e..8351a13 100644
--- a/weex-loader/test/expect/z.js
+++ b/weex-loader/test/expect/z.js
@@ -11,4 +11,4 @@
 ;})
 
 // require module
-bootstrap('@weex-component/z', {"downgrade":{"ios":{"appVersion":">=13.0.0"},"android":{"appVersion":"<=0.0.0"}},"transformerVersion":"0.3.0"}, {"a":1,"b":2})
\ No newline at end of file
+bootstrap('@weex-component/z', {"downgrade":{"ios":{"appVersion":">=13.0.0"},"android":{"appVersion":"<=0.0.0"}},"transformerVersion":"0.3.1"}, {"a":1,"b":2})
\ No newline at end of file
diff --git a/weex-loader/test/highlight.css b/weex-loader/test/highlight.css
new file mode 100644
index 0000000..4662927
--- /dev/null
+++ b/weex-loader/test/highlight.css
@@ -0,0 +1,4 @@
+.highlight {
+    color: #666;
+    font-size: 26;
+}
\ No newline at end of file
diff --git a/weex-loader/webpack.config.js b/weex-loader/webpack.config.js
index 6cf76bf..2b88dec 100644
--- a/weex-loader/webpack.config.js
+++ b/weex-loader/webpack.config.js
@@ -32,6 +32,10 @@
         loaders: ['index.js?type=script', 'babel?presets[]=es2015']
       },
       {
+        test: /\.css(\?[^?]+)?$/, 
+        loaders: ['index.js?type=style']
+      },
+      {
         test: /\.less(\?[^?]+)?$/, 
         loaders: ['index.js?type=style', 'less']
       },