我有一个非常简单的程序来学习如何使用打字稿工作,我用Browserify,使其能够在浏览器内运行捆绑我的所有.ts
文件。如何调用打字稿功能出.ts文件的?
试想一下,很简单的变量声明中打字稿:
main.ts
let testVar = "Something";
这里是我的gulpfile.js
编译(并在需要时捆绑文件):
'use strict';
var gulp = require('gulp');
var browserify = require("browserify");
var source = require('vinyl-source-stream');
var tsify = require("tsify");
var buffer = require('vinyl-buffer');
var sourcemaps = require('gulp-sourcemaps');
var minify = require('gulp-minify');
gulp.task('build',['minify'], function() {
return browserify({
basedir: '.',
debug: true,
entries: ['src/main.ts'],
cache: {},
packageCache: {}
})
.plugin(tsify)
.bundle()
.pipe(source('main.js'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest("dist"));
});
gulp.task('minify',function() {
gulp.src('dist/main.js')
.pipe(minify({
ext:{
src:'.js',
min:'.min.js'
},
ignoreFiles: ['.min.js']
}))
.pipe(gulp.dest('dist'));
});
,这是我tsconfig.json
{
"compilerOptions": {
"module": "system",
"sourceMap": true,
"lib": ["dom", "es2015.promise", "es5"],
"noImplicitAny": true,
"target": "es2015"
},
"exclude": [
"node_modules"
],
"include": [
"src/**/*"
],
"files": [
"src/**/*"
]
}
像预期的那样构建任务工作,我在打字稿里面的内容也很有效。但是,当我将捆绑并编译到我的.html文件中,并尝试访问testVar变量时。通过只是轻松地调用它在Chrome控制台,console.log(testVar);
但它返回的错误:
Uncaught ReferenceError: testVar is not defined
,这里是编译+捆绑.js
文件:
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
let testVar = "Something";
},{}]},{},[1])
//# sourceMappingURL=main.js.map
如何访问的函数和变量绑定的内.js
文件? 如何设计我的打字稿库的API? (任何好资源)
确定变量名仍是因为的testvar它看起来就好像您压缩代码。 –
@NicoVanBelle,是的,它仍然是测试变量 –