Guns脚手架是一个基于Java的Web应用程序开发框架,它旨在帮助开发人员快速构建出高质量的Web应用程序。Guns脚手架是一个免费的、开源的、易于使用的Web应用程序开发工具,它能够帮助开发人员快速搭建出高质量的Web应用程序。
Guns脚手架有很多优点,首先,它是一个易于使用的工具,它能够帮助开发人员快速搭建出高质量的Web应用程序。此外,Guns脚手架支持MVC、AOP、IOC、ORM等核心功能,这些核心功能都能够帮助开发人员快速实现他们想要实现的目标。此外,Guns脚手架还有一个很好的文件存储服务,这使得文件存储变得非常方便。
Guns脚手架支持大量数据库,包括MySQL、Oracle、SQL Server、PostgreSQL等数据库。此外,Guns还有一个很好的代码生成器,它能够帮助开发人员快速生成代码。此外,Guns还有一个很好的日志服务,它能够帮助开发人员对日志进行分析和监测。
public class Guns { public static void main(String[] args) { // 加载guns配置文件 GunsConfig config = new GunsConfig(); // 初始化guns Guns guns = new Guns(config); // 加载guns中间件 guns.loadMiddleware(); // 加载guns请求 guns.loadRequest(); } }
grunt-init
是一个用于自动创建项目脚手架的工具。它会基于当前工作环境和你给出的一些配置选项构建一个完整的目录结构。至于其所生成的具体文件和内容,依赖于你所选择的模版和构建过程中你对具体信息所给出的配置选项。
注意:这个独立的程序曾经是作为Grunt内置的"init"任务而存在的。在从0.3升级到0.4指南中可以查看更多关于它演变的信息。
为了使用grunt-init,需要将其安装到全局环境中。
npm install -g grunt-init
这样就会把grunt-init
命令安装了到你的系统路径,从而允许你在任何目录中都可以运行它。
注意:你可能需要使用sudo权限或者作为超级管理员运行shell命令来执行这个操作。
grunt-init --help
来获取程序帮助以及列出可用模板清单grunt-init TEMPLATE
并基于可用模板创建一个项目grunt-init /path/to/TEMPLATE
基于任意其他目录中可用的模板创建一个项目注意,大多数的模板都应该在当前目录(执行命令的目录)中生成它们的文件(自动生成的项目相关的文件),因此,如果你不想覆盖现有的文件,注意一定要切换到一个新目录中来保证文件生成到其他目录。
一旦模板被安装到你的~/.grunt-init/
目录中(在Windows平台是%USERPROFILE%.grunt-init
目录),那么就可以通过grunt-init
命令来使用它们了。建议你使用git将模板克隆到项目目录中。例如, grunt-init-jquery模板可以像下面这样安装:
git clone https://github.com/gruntjs/grunt-init-jquery.git ~/.grunt-init/jquery
注意:如果你希望在本地像"foobarbaz"这样使用模板,你应该指定~/.grunt-init/foobarbaz
之后再克隆。grunt-init
会使用实际在于~/.grunt-init/
目录中的实际的目录名。
下面是一些有Grunt官方维护的grunt-init模板:
你可以创建和使用自定义模板。但是你的模板必须遵循与上述模板相同的文件结构。
下面是一个名为my-template
的模板示例,它必须遵循下面这样的常规文件结构:
my-template/template.js
- 主模板文件。my-template/rename.json
- 模板特定的重命名规则,作为模板进行处理。my-template/root/
- f要复制到目标位置的文件。假设这些文件存储在/path/to/my-template
目录中,那么命令grunt-init /path/to/my-template
就会处理这些模板。这个目录中可能存在多个命名唯一的模板(多个不重名的模板)。
此外,如果你把这个自定义模板放在你的~/.grunt-init/
目录中(在Windows上是%USERPROFILE%.grunt-init
目录),那么只需要使用grunt-init my-template
命令就可以使用这个模版了。
当执行初始化模板时, 只要模板使用init.filesToCopy
和init.copyAndProcess
方法,任何位于root/
子目录中的文件都将被复制到当前目录。
注意所有被复制的文件都会被做为模板进行处理,并且所有{% %}
模板都会依据props
数据对象集合中的数据进行替换,除非设置了noProcess
选项。可以看看jquery template中的案例。
rename.json
用于描述sourcepath
到destpath
的重命名映射关系。sourcepath
必须是相对于root/
目录要被复制的文件路径,但是destpath
值可以包含{% %}
模板,用于描述目标路径是什么。
如果destpath
被指定为false
,那么文件就不会被复制。此外,srcpath
还支持通配符匹配模式。
每个初始化提示都会有一个硬编码的默认值或者它会根据当前环境来尝试确定该缺省值。如果你想覆盖某个特定提示信息的默认值,你可以在OS X或者Linux的~/.grunt-init/defaults.json
或者Windows的%USERPROFILE%.grunt-initdefaults.json
文件中选择性的进行处理。
例如,由于我希望使用一个与众不同的名字来替代默认的名字,并且我还希望排除我的邮箱地址,同时我还希望自动指定一个作者的url,那么我的defaults.json
看起来就可能像下面这样。
{
"author_name": ""Cowboy" Ben Alman",
"author_email": "none",
"author_url": "http://benalman.com/"
}
注意:即使所有的内置提示信息都有文档,你还可以在源代码中找到他们的名字和默认值。
当用户运行grunt init
或者grunt-init
来显示所有可用的初始化模板时,这个简短的模板描述也会和模板名一起显示。
exports.description = descriptionString;
如果指定了这个选项,这个可选的扩展描述将会在任何提示信息显示之前显示出来。这是一个给用户提供一些解释命名空间相关帮助信息的很好的地方。这些提示可能是必选的也可能是可选的,等等。
exports.notes = notesString;
如果这个(推荐指定)可选的通配模式或者通配模式数组有匹配项出现,Grunt将终止并生成一个警告信息,用户可以使用--force
来覆盖这个默认行为。这对于初始化模板可能覆盖现有文件的情况来说是非常有用的。
exports.warnOn = wildcardPattern;
然而最常见的值是'*'
,它能够匹配任意文件或者目录。使用minimatch通配符模式具有很大的灵活性。例如:
exports.warnOn = 'Gruntfile.js'; // Warn on a Gruntfile.js file.
exports.warnOn = '*.js'; // Warn on any .js file.
exports.warnOn = '*'; // Warn on any non-dotfile or non-dotdir.
exports.warnOn = '.*'; // Warn on any dotfile or dotdir.
exports.warnOn = '{.*,*}'; // Warn on any file or dir (dot or non-dot).
exports.warnOn = '!*
获取单一的任务文件路径。
init.getFile(filepath[, ...])
返回一个包含所有可用模板的对象。
init.getTemplates()
在初始化目录中搜索初始化模板。template
是指模板的位置。还包括~/.grunt-init
和grunt-init中的核心初始化任务。
init.initSearchDirs([filename])
启动程序并提示开始输入。
init.process(options, prompts, done)
init.process({}, [
// Prompt for these values
init.prompt('name'),
init.prompt('description'),
init.prompt('version')
], function(err, props) {
// All finished, do something with the properties
});
给用户一个提示,并让用户输入自己选择的值。
init.prompt(name[, default])
此对象包含了所有提示信息。
var prompts = init.prompts;
读取任务文件中(如果存在)读取JSON格式的默认值,并将它们合并到一个数据对象中。
init.readDefaults(filepath[, ...])
模板的重命名规则。
var renames = init.renames;
// renames === { 'test/name_test.js': 'test/{%= name %}_test.js' }
搜索模板的目录数组。
var dirs = init.searchDirs;
根据文件名搜索初始化模板路径并返回一个绝对路径。
init.srcpath(filepath[, ...])
返回用户模板目录的绝对路径。
var dir = init.userDir();
// dir === '/Users/shama/.grunt-init'
在目标目录中保存一个package.json
文件。回调函数可以用于后置处理属性的添加/移除/其他操作。
init.writePackageJSON(filename, props[, callback])
用于package.json
中的作者邮箱地址。默认情况下会尝试从用户的git配置中找到一个默认值。
用于package.json
中的作者全名和版权信息。也会尝试从用户的git配置中找到一个默认值。
package.json
中的用于公开作者个人网站的URL。
项目根目录中cli脚本的相对路径。
用于项目问题跟踪的公开URL。如果项目有一个Github仓库,将自动指向项目Github的问题跟踪模块(issue)。
项目的描述。通常在package.json
或者README文件中。
项目所需的有效Grunt版本范围定义。
指向项目首页的公开URL。如果此项目使用的是github仓库,那么,默认是Github仓库的url。
如果是jQuery项目,它表示项目所需的jQuery版本。必须是一个有效的版本范围定义。
项目许可协议证书。多个许可协议证书使用空格分割,内置的许可协议有:MIT
、MPL-2.0
、GPL-2.0
和Apache-2.0
。默认是MIT
协议。可以使用init.addLicenseFiles方法添加自定义许可协议证书。
项目的主入口。默认是lib
目录已项目名称命名的文件。
项目名称。在项目模版中将会大量使用,默认指向当前工作目录。
项目所需的Node.js版本。必须是一个有效的版本范围定义。
项目中运行测试的命令,默认情况下是grunt
。
项目的git仓库。默认是一个猜测的github url。
适合大家识别的项目名称。默认是原始项目名称,并且经过过滤,适合大家识别。
项目的版本号。默认是第一个有效的语义版本号:0.1.0
。
grunt.optionGrunt的option API被用来在多个任务之间共享参数、访问命令行中设置的参数。一个简单的案例就是为一个目标(target...
介绍WipeLeft类定义了一个擦除左效果。 组件的前或后状态必须是不可见的。类声明以下是 mx.effects.WipeLeft 类的声明:public cl...
IPv4/IPv6双协议栈FEATURESTATE:Kubernetesv1.23[stable]IPv4/IPv6双协议栈网络能够将IPv4和IPv6地址分配给Pod和Service。从1.21...
限制范围默认情况下,Kubernetes集群上的容器运行使用的计算资源没有限制。使用资源配额,集群管理员可以以名字空间为单位,限制...
污点和容忍度节点亲和性是Pod的一种属性,它使Pod被吸引到一类特定的节点(这可能出于一种偏好,也可能是硬性要求)。污点(Tain...
安装扩展(Addons)Add-ons扩展了Kubernetes的功能。本文列举了一些可用的add-ons以及到它们各自安装说明的链接。每个Add-ons按...
设备插件FEATURESTATE:Kubernetesv1.10[beta]Kubernetes提供了一个设备插件框架,你可以用它来将系统硬件资源发布到Kubelet。供...
使用WeaveNet提供NetworkPolicy本页展示如何使用使用WeaveNet提供NetworkPolicy。安装WeaveNet插件按照通过插件集成Kubernetes指...
伴随着移动互联的大潮,当今越来越多的网站已经从网页模式进化到了 Webapp 模式。它们运行在现代的高级浏览器里,使用 HTML5、 C...