Skip to content

Commit 316b2b7

Browse files
committed
1. 修复plupload instance 污染问题
2. 引入 babel 编译
1 parent 5b36228 commit 316b2b7

File tree

7 files changed

+58
-54
lines changed

7 files changed

+58
-54
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/node_modules
22
/.vscode
33
/package-lock.json
4+
/.idea

babel.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
presets: [
3+
"@babel/preset-env"
4+
],
5+
compact: true
6+
};

dist/vue-plupload.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/vue-plupload.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gulpfile.js

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
var gulp = require('gulp');
2-
var sourcemaps = require('gulp-sourcemaps');
3-
var vueify = require("vueify");
4-
var rename = require("gulp-rename");
5-
var uglify = require('gulp-uglify');
6-
var source = require('vinyl-source-stream');
7-
var buffer = require('vinyl-buffer');
8-
var gutil = require('gulp-util');
9-
var browserify = require('browserify');
1+
const gulp = require('gulp');
2+
const sourcemaps = require('gulp-sourcemaps');
3+
const vueify = require("vueify");
4+
const uglify = require('gulp-uglify');
5+
const source = require('vinyl-source-stream');
6+
const buffer = require('vinyl-buffer');
7+
const gutil = require('gulp-util');
8+
const browserify = require('browserify');
9+
const babel = require('gulp-babel');
1010

1111

1212
gulp.task('set-dev-node-env', function() {
@@ -20,7 +20,7 @@ gulp.task('set-prod-node-env', function() {
2020

2121
gulp.task('vueify', ["set-prod-node-env"], function() {
2222
// set up the browserify instance on a task basis
23-
var b = browserify({
23+
let b = browserify({
2424
entries: './index.js',
2525
debug: false,
2626
transform: ["vueify"],
@@ -34,16 +34,19 @@ gulp.task('vueify', ["set-prod-node-env"], function() {
3434
.pipe(source('vue-plupload.js'))
3535
.pipe(buffer())
3636
.pipe(sourcemaps.init({loadMaps: true}))
37-
// Add transformation tasks to the pipeline here.
38-
.pipe(uglify())
39-
.on('error', gutil.log)
37+
.pipe(babel({
38+
presets: ['@babel/preset-env']
39+
}))
40+
// Add transformation tasks to the pipeline here.
41+
.pipe(uglify())
42+
.on('error', gutil.log)
4043
.pipe(sourcemaps.write('.'))
4144
.pipe(gulp.dest("dist"));
4245
});
4346

4447
gulp.task("sample", ["set-dev-node-env"], function() {
4548
// set up the browserify instance on a task basis
46-
var b = browserify({
49+
let b = browserify({
4750
entries: './index.js',
4851
debug: true,
4952
transform: ["vueify"],
@@ -59,13 +62,13 @@ gulp.task("sample", ["set-dev-node-env"], function() {
5962
.pipe(gulp.dest("docs"));
6063
});
6164

62-
gulp.task("dev", function() {
63-
var watcher = gulp.watch('./src/*.vue', ['sample']);
65+
gulp.task("dev", ["sample"],function() {
66+
let watcher = gulp.watch('./src/*.vue', ['sample']);
6467
watcher.on('change', function(event) {
6568
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
6669
});
6770
});
6871

6972

7073

71-
gulp.task("default", ["vueify"])
74+
gulp.task("default", ["vueify"]);

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,16 @@
2222
},
2323
"homepage": "https://github.com/mm-sam/vue-plupload#readme",
2424
"dependencies": {
25-
"lodash": "^4.17.4",
2625
"lodash.merge": "^4.6.0",
2726
"plupload": "^2.3.2",
2827
"vue": "^1.0.28"
2928
},
3029
"devDependencies": {
30+
"@babel/core": "^7.7.2",
31+
"@babel/preset-env": "^7.7.1",
3132
"browserify": "^14.4.0",
3233
"gulp": "^3.9.1",
33-
"gulp-rename": "^1.2.2",
34+
"gulp-babel": "^8.0.0",
3435
"gulp-sourcemaps": "^2.6.0",
3536
"gulp-uglify": "^3.0.0",
3637
"gulp-util": "^3.0.8",

src/vue-plupload.vue

Lines changed: 26 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<input v-el:btn class="{{class}}" value="{{text}}" type="button" />
2+
<input v-el:btn :class="class" :value="text" type="button" />
33
</template>
44
<style>
55
.plupload-btn {
@@ -23,11 +23,11 @@
2323
}
2424
</style>
2525
<script>
26-
var Vue = global.Vue || require("vue");
27-
var plupload = require("plupload");
28-
var _ = require('lodash');
26+
const Vue = global.Vue || require("vue");
27+
const plupload = require("plupload");
28+
const merge = require('lodash.merge');
2929
30-
var uploaderDefaultOption = {
30+
const uploaderDefaultOption = {
3131
runtimes: 'html5,html4'
3232
};
3333
@@ -64,60 +64,53 @@ module.exports = Vue.extend({
6464
watch : {
6565
"options" : {
6666
handler: function(val, oldVal) {
67-
var self = this;
68-
69-
if (!self.uploader) {
70-
self.renderPlupload();
67+
if (!this.uploader) {
68+
this.renderPlupload();
7169
} else {
72-
var opt = self.mergeOptions(val);
73-
self.uploader.setOption(opt);
70+
let opt = this.mergeOptions(val);
71+
this.uploader.setOption(opt);
7472
}
75-
76-
console.log("options change!");
77-
console.log(val)
7873
},
7974
deep: true
8075
}
8176
},
8277
8378
methods: {
8479
mergeOptions: function(val) {
85-
var self = this;
86-
87-
return _.merge(uploaderDefaultOption, val, {
88-
browse_button: self.$els.btn
80+
return merge(uploaderDefaultOption, val, {
81+
browse_button: this.$els.btn
8982
});
9083
},
9184
renderPlupload: function() {
92-
var self = this;
85+
let self = this;
9386
94-
Vue.nextTick(function () {
87+
Vue.nextTick(() => {
9588
96-
var opt = self.mergeOptions(self.options);
89+
let opt = this.mergeOptions(this.options);
9790
98-
self.uploader = new plupload.Uploader(opt);
91+
this.uploader = new plupload.Uploader(opt);
9992
100-
self.uploader.bind("PostInit", function(uploader){
93+
this.uploader.bind("PostInit", function(uploader){
10194
self.$emit("init", uploader);
10295
});
103-
104-
self.uploader.bind("FilesAdded", function(up, files){
96+
97+
this.uploader.bind("FilesAdded", function(up, files){
10598
self.$emit("added", up, files);
10699
});
107-
108-
self.uploader.bind("UploadProgress", function(up, file){
100+
101+
this.uploader.bind("UploadProgress", function(up, file){
109102
self.$emit("progress", up, file);
110103
});
111-
112-
self.uploader.bind("FileUploaded", function(up, file, result){
104+
105+
this.uploader.bind("FileUploaded", function(up, file, result){
113106
self.$emit("uploaded", up, file, result);
114107
});
115-
116-
self.uploader.bind("Error", function(up, err){
108+
109+
this.uploader.bind("Error", function(up, err){
117110
self.$emit("error", up, err);
118111
});
119-
120-
self.uploader.init();
112+
113+
this.uploader.init();
121114
122115
});
123116
}

0 commit comments

Comments
 (0)