Authored by whb

PC重构

1 {{> layout/page-footer}} 1 {{> layout/page-footer}}
2 - <script src="http://localhost:8000/static/js/sea.js?nowrap"></script>  
3 - <script>  
4 - seajs.config({  
5 - base: 'http://localhost:8000/'  
6 - });  
7 - </script> 2 + {{#if rlsEnv}}
  3 + <script src="http://cdn.yoho.cn/yohobuy/{{version}}/lib.js"></script>
  4 + <script src="http://cdn.yoho.cn/yohobuy/{{version}}/index.js"></script>
  5 + {{/if}}
  6 + {{#if preEnv}}
  7 + <script src="http://cdn.yoho.cn/yohobuy/{{version}}/lib.js"></script>
  8 + <script src="http://cdn.yoho.cn/yohobuy/{{version}}/index.js"></script>
  9 + {{/if}}
  10 + {{#if testEnv}}
  11 + <script src="http://static.buy.test.yoho.cn/dist/yohobuy/{{version}}/lib.js"></script>
  12 + <script src="http://static.buy.test.yoho.cn/dist/yohobuy/{{version}}/index-debug.js"></script>
  13 + {{/if}}
  14 + {{#if devEnv}}
  15 + <script src="http://localhost:8000/static/js/sea.js?nowrap"></script>
  16 + <script>
  17 + seajs.config({
  18 + base: 'http://localhost:8000/'
  19 + });
  20 + </script>
  21 + {{/if}}
8 {{> layout/use}} 22 {{> layout/use}}
9 </body> 23 </body>
10 </html> 24 </html>
@@ -9,10 +9,30 @@ @@ -9,10 +9,30 @@
9 <meta name="keywords" content="{{keywords}}"> 9 <meta name="keywords" content="{{keywords}}">
10 <meta name="description" content="{{description}}"> 10 <meta name="description" content="{{description}}">
11 <title>{{title}}</title> 11 <title>{{title}}</title>
12 - <!-- [if (gte IE 6)&(lte IE 8)>  
13 - <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>  
14 - <![endif]-->  
15 - <link rel="stylesheet" href="http://webstatic.dev.yohobuy.com/css/index.css"> 12 + {{#if rlsEnv}}
  13 + <!-- [if (gte IE 6)&(lte IE 8)>
  14 + <script src="http://cdn.yoho.cn/yohobuy/respond.min.js"></script>
  15 + <![endif]-->
  16 + <link rel="stylesheet" href="http://cdn.yoho.cn/yohobuy/{{version}}/index.css">
  17 + {{/if}}
  18 + {{#if preEnv}}
  19 + <!-- [if (gte IE 6)&(lte IE 8)>
  20 + <script src="http://cdn.yoho.cn/yohobuy/respond.min.js"></script>
  21 + <![endif]-->
  22 + <link rel="stylesheet" href="http://cdn.yoho.cn/yohobuy/{{version}}/index.css">
  23 + {{/if}}
  24 + {{#if testEnv}}
  25 + <!-- [if (gte IE 6)&(lte IE 8)>
  26 + <script src="http://static.buy.test.yoho.cn/dist/yohobuy/respond.min.js"></script>
  27 + <![endif]-->
  28 + <link rel="stylesheet" href="http://static.buy.test.yoho.cn/dist/yohobuy/{{version}}/index.css">
  29 + {{/if}}
  30 + {{#if devEnv}}
  31 + <!-- [if (gte IE 6)&(lte IE 8)>
  32 + <script src="http://webstatic.dev.yohobuy.com/plugin/page-use/respond.min.js"></script>
  33 + <![endif]-->
  34 + <link rel="stylesheet" href="http://webstatic.dev.yohobuy.com/css/index.css">
  35 + {{/if}}
16 </head> 36 </head>
17 <body> 37 <body>
18 {{> layout/page-header}} 38 {{> layout/page-header}}
1 -/**  
2 - * GULP-FILE  
3 - * author: xuqi(qi.xu@yoho.cn)  
4 - * date: 2015/9/30  
5 - */  
6 -  
7 -var gulp = require('gulp'),  
8 - compass = require('gulp-compass'),  
9 - cp = require('child_process');  
10 -  
11 -var fs = require('fs'),  
12 - ftp = require('gulp-ftp'),  
13 - gutil = require('gulp-util'),  
14 - uglify = require('gulp-uglify'),  
15 - Package = require('father').SpmPackage,  
16 - transport = require('gulp-spm'),  
17 - concat = require('gulp-concat');  
18 -  
19 -var config = JSON.parse(fs.readFileSync('./package.json').toString());  
20 -  
21 -var rootDist = 'dist/yohobuy/',  
22 - ftpConfig = {  
23 - host: '218.94.75.58',  
24 - user: 'php',  
25 - pass: 'yoho9646'  
26 - };  
27 -  
28 -var distDir = {  
29 - js: rootDist + config.version,  
30 - css: rootDist + config.version,  
31 - img: rootDist + 'assets/img',  
32 - font: rootDist + 'assets/font'  
33 -};  
34 -  
35 -gulp.task('default', ['compass', 'compass-watch', 'spm-doc']);  
36 -  
37 -// compass  
38 -gulp.task('compass', function() {  
39 - gulp.src('sass/**/*.scss')  
40 - .pipe(  
41 - compass({  
42 - config_file: 'config.rb',  
43 - css: 'css',  
44 - sass: 'sass'  
45 - })  
46 - ).on('error', function(error) {  
47 - console.log(error);  
48 - this.emit('end');  
49 - });  
50 -});  
51 -  
52 -// compass watch  
53 -gulp.task('compass-watch', function() {  
54 - gulp.watch('sass/**/*.scss', ['compass']);  
55 -});  
56 -  
57 -// start spm server  
58 -gulp.task('spm-doc', function() {  
59 - var sd = cp.exec('spm doc');  
60 -  
61 - // sd.stdout.on('data', function(data) {  
62 - // console.log(data);  
63 - // });  
64 -  
65 - sd.stderr.on('data', function(data) {  
66 - console.log(data);  
67 - });  
68 -  
69 - sd.on('exit', function(code) {  
70 - console.log('process spm doc exit with code ' + code);  
71 - });  
72 -});  
73 -  
74 -//生成发布目录,可用于上传测试机  
75 -gulp.task('ge', ['assets', 'compass-production', 'build']);  
76 -  
77 -//发布  
78 -gulp.task('dist', ['assets', 'compass-production', 'build'], function() {  
79 - var ftpstream = ftp(ftpConfig);  
80 -  
81 - return gulp.src('dist/**/')  
82 - .pipe(ftpstream)  
83 - .pipe(gutil.noop());  
84 -});  
85 -  
86 -//font+img->dist/assets  
87 -gulp.task('assets', function() {  
88 - gulp.src('img/**')  
89 - .pipe(gulp.dest(distDir.img));  
90 - gulp.src('font/*')  
91 - .pipe(gulp.dest(distDir.font));  
92 -});  
93 -  
94 -//compass  
95 -gulp.task('compass-production', ['assets'], function() {  
96 - gulp.src('sass/index.scss')  
97 - .pipe(  
98 - compass({  
99 - css: distDir.css,  
100 - sass: 'sass',  
101 - image: distDir.img,  
102 - font: distDir.font,  
103 - http_path: '/',  
104 - style: 'compressed',  
105 - sourcemap: false  
106 - })  
107 - )  
108 - .on('error', function(error) {  
109 - console.log(error);  
110 - this.emit('end');  
111 - });  
112 -});  
113 -  
114 -//spm build  
115 -gulp.task('build', ['libs', 'business']);  
116 -  
117 -//libs  
118 -gulp.task('libs', ['pre-libs', 'concat-min-libs', 'clear-libs']);  
119 -  
120 -gulp.task('pre-libs', function() {  
121 - var obj = {  
122 - name: '',  
123 - version: config.version,  
124 - spm: config.spm  
125 - };  
126 - var packages = [],  
127 - libsjs = '';  
128 -  
129 - var libCon, key, i;  
130 -  
131 - var pkg;  
132 -  
133 - obj.spm.main = 'libs.js';  
134 - obj.spm.buildArgs = '--idleading {{}} --include all';  
135 -  
136 - libCon = JSON.stringify(obj);  
137 -  
138 - fs.renameSync('package.json', 'package.bak.json');  
139 - fs.writeFileSync('package.json', libCon);  
140 -  
141 - for (key in obj.spm.dependencies) {  
142 - if (obj.spm.inside && obj.spm.inside[key]) {  
143 - packages.push(obj.spm.inside[key]);  
144 - } else {  
145 - packages.push(key);  
146 - }  
147 - }  
148 -  
149 - for (i = 0; i < packages.length; i++) {  
150 - libsjs += 'require("' + packages[i] + '");';  
151 - }  
152 -  
153 - fs.writeFileSync('libs.js', libsjs); //重写入口文件  
154 -  
155 - pkg = new Package(__dirname);  
156 -  
157 - return gulp.src(pkg.main)  
158 - .pipe(transport({  
159 - pkg: pkg  
160 - }))  
161 - .pipe(gulp.dest(distDir.js));  
162 -});  
163 -  
164 -gulp.task('concat-min-libs', ['pre-libs'], function() {  
165 - var path = distDir.js + '/libs.js';  
166 - var jsStr = fs.readFileSync(path).toString();  
167 -  
168 - fs.writeFileSync(path, jsStr.substr(jsStr.indexOf('});') + 4));  
169 -  
170 - return gulp.src(['plugin/sea.js', distDir.js + '/libs.js'])  
171 - .pipe(concat('lib.js'))  
172 - .pipe(uglify())  
173 - .pipe(gulp.dest(distDir.js));  
174 -});  
175 -  
176 -gulp.task('clear-libs', ['concat-min-libs'], function() {  
177 - fs.renameSync('package.bak.json', 'package.json');  
178 - fs.unlinkSync('./libs.js');  
179 - fs.unlinkSync(distDir.js + '/libs.js');  
180 -});  
181 -  
182 -gulp.task('business', ['libs'], function() {  
183 - var pkg = new Package(__dirname);  
184 -  
185 - return gulp.src(pkg.main)  
186 - .pipe(transport({  
187 - pkg: pkg  
188 - }))  
189 - .pipe(concat('index-debug.js'))  
190 - .pipe(gulp.dest(distDir.js))  
191 - .pipe(uglify())  
192 - .pipe(concat('index.js'))  
193 - .pipe(gulp.dest(distDir.js));  
194 -});  
@@ -28,7 +28,7 @@ var $cr = $('#country-code-hide'), @@ -28,7 +28,7 @@ var $cr = $('#country-code-hide'),
28 hasPh = false, 28 hasPh = false,
29 hasCa = false; 29 hasCa = false;
30 30
31 -require('../../plugin/jquery.placeholder'); 31 +require('yoho.placeholder');
32 32
33 /*function getSource(column, postition, event) { 33 /*function getSource(column, postition, event) {
34 try { 34 try {
@@ -19,7 +19,7 @@ var $pwdIntensity = $('.pwd-intensity'), @@ -19,7 +19,7 @@ var $pwdIntensity = $('.pwd-intensity'),
19 $pwdParent = $pwdIntensity.closest('.pwd-intensity-container'), 19 $pwdParent = $pwdIntensity.closest('.pwd-intensity-container'),
20 $pwdTip1 = $('#pwd-tip1'); 20 $pwdTip1 = $('#pwd-tip1');
21 21
22 -require('../../plugin/jquery.placeholder'); 22 +require('yoho.placeholder');
23 23
24 24
25 /* 25 /*
1 -/*!  
2 - * HTML5 Placeholder jQuery Plugin v1.8.3  
3 - * @link http://mths.be/placeholder  
4 - * @author Mathias Bynens <http://mathiasbynens.be/>  
5 - */  
6 -  
7 - var jQuery = require('yoho.jquery');  
8 -(function(f){var e='placeholder' in document.createElement('input'),a='placeholder' in document.createElement('textarea');if(e&&a){f.fn.placeholder=function(){return this};f.fn.placeholder.input=f.fn.placeholder.textarea=true}else{f.fn.placeholder=function(){return this.filter((e?'textarea':':input')+'[placeholder]').bind('focus.placeholder',b).bind('blur.placeholder',d).trigger('blur.placeholder').end()};f.fn.placeholder.input=e;f.fn.placeholder.textarea=a;f(function(){f('form').bind('submit.placeholder',function(){var g=f('.placeholder',this).each(b);setTimeout(function(){g.each(d)},10)})});f(window).bind('unload.placeholder',function(){f('.placeholder').val('')})}function c(h){var g={},i=/^jQuery\d+$/;f.each(h.attributes,function(k,j){if(j.specified&&!i.test(j.name)){g[j.name]=j.value}});return g}function b(){var g=f(this);if(g.val()===g.attr('placeholder')&&g.hasClass('placeholder')){if(g.data('placeholder-password')){g.hide().next().attr('id',g.removeAttr('id').data('placeholder-id')).show().focus()}else{g.val('').removeClass('placeholder')}}}function d(h){var l,k=f(this),g=k,j=this.id;if(k.val()===''){if(k.is(':password')){if(!k.data('placeholder-textinput')){try{l=k.clone().attr({type:'text'})}catch(i){l=f('<input>').attr(f.extend(c(this),{type:'text'}))}l.removeAttr('name').data('placeholder-password',true).data('placeholder-id',j).bind('focus.placeholder',b);k.data('placeholder-textinput',l).data('placeholder-id',j).before(l)}k=k.removeAttr('id').hide().prev().attr('id',j).show()}k.addClass('placeholder').val(k.attr('placeholder'))}else{k.removeClass('placeholder')}}}(jQuery));  
  1 +/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
  2 + * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
  3 + * */
  4 +
  5 +!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);