• 关于

    bootstrap列表与代码样式

    的搜索结果

回答

详细解答可以参考官方帮助文档与Rails集成在Rails应用中使用OSS Ruby SDK只需要在Gemfile中添加以下依赖: gem 'aliyun-sdk', '~> 0.3.0然后在使用OSS时引入依赖就可以了: require 'aliyun/oss'另外,SDK的rails/目录下提供一些方便用户使用的辅助代码。 下面我们将利用SDK来实现一个简单的OSS文件管理器(oss-manager),最终包含以下功能: 列出用户所有的Bucket列出Bucket下所有的文件,按目录层级列出上传文件下载文件 1. 创建项目先安装Rails,然后创建一个Rails应用,oss-manager: gem install railsrails new oss-manager作为一个好的习惯,使用git管理项目代码: cd oss-managergit initgit add .git commit -m "init project"2. 添加SDK依赖编辑oss-manager/Gemfile,向其中加入SDK的依赖: gem 'aliyun-sdk', '~> 0.3.0'然后在oss-manager/下执行: bundle install保存这一步所做的更改: git add .git commit -m "add aliyun-sdk dependency"3. 初始化OSS Client为了避免在项目中用到OSS Client的地方都要初始化,我们在项目中添加一个初始化文件,方便在项目中使用OSS Client: # oss-manager/config/initializers/aliyun_oss_init.rbrequire 'aliyun/oss'module OSS def self.client unless @client Aliyun::Common::Logging.set_log_file('./log/oss_sdk.log') @client = Aliyun::OSS::Client.new( endpoint: Rails.application.secrets.aliyun_oss['endpoint'], access_key_id: Rails.application.secrets.aliyun_oss['access_key_id'], access_key_secret: Rails.application.secrets.aliyun_oss['access_key_secret'] ) end @client endend 上面的代码在SDK的rails/目录下可以找到。这样初始化后,在项目中使用OSSClient就非常方便: buckets = OSS.client.list_buckets其中endpoint和AccessKeyId/AccessKeySecret保存在oss-manager/conf/secrets.yml中,例如: development: secret_key_base: xxxx aliyun_oss: endpoint: xxxx access_key_id: aaaa access_key_secret: bbbb 保存代码: git add .git commit -m "add aliyun-sdk initializer"4. 实现List buckets功能首先用rails生成管理Buckets的controller: rails g controller buckets index这样会在oss-manager中生成以下文件: app/controller/buckets_controller.rb Buckets相关的逻辑代码app/views/buckets/index.html.erb Buckets相关的展示代码app/helpers/buckets_helper.rb 一些辅助函数 首先编辑buckets_controller.rb,调用OSS Client,将list_buckets的结果存放在@buckets变量中: class BucketsController < ApplicationController def index @buckets = OSS.client.list_buckets endend 然后编辑views/buckets/index.html.erb,将Bucket列表展示出来: <h1>Buckets</h1><table class="table table-striped"> <tr> <th>Name</th> <th>Location</th> <th>CreationTime</th> </tr> <% @buckets.each do |bucket| %> <tr> <td><%= link_to bucket.name, bucket_objects_path(bucket.name) %></td> <td><%= bucket.location %></td> <td><%= bucket.creation_time.localtime.to_s %></td> </tr> <% end %></table> 其中bucket_objects_path是一个辅助函数,在app/helpers/buckets_helper.rb中: module BucketsHelper def bucket_objects_path(bucket_name) "/buckets/#{bucket_name}/objects" endend 这样就完成了列出所有Bucket的功能。在运行之前,我们还需要配置Rails的路由,使得我们在浏览器中输入的地址能够调用正确的逻辑。编辑config/routes.rb,增加一条: resources :buckets do resources :objectsend好了,在oss-manager/下输入rails s以启动rails server,然后在浏览器中输入http://localhost:3000/buckets/就能看到Bucket列表了。 最后保存一下代码: git add .git commit -m "add list buckets feature"5. 实现List objects功能首先生成一个管理Objects的controller: rails g controller objects index然后编辑app/controllers/objects_controller.rb: class ObjectsController < ApplicationController def index @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @objects = @bucket.list_objects(:prefix => @prefix, :delimiter => '/') endend 上面的代码首先从URL的参数中获取Bucket名字,为了只按目录层级显示,我们还需要一个前缀。然后调用OSS Client的list_objects接口获取文件列表。注意,这里获取的是指定前缀下,并且以’/‘为分界的文件。这样做是为也按目录层级列出文件。请参考管理文件 接下来编辑app/views/objects/index.html.erb: <h1>Objects in <%= @bucket_name %></h1><p> <%= link_to 'Upload file', new_object_path(@bucket_name, @prefix) %></p><table class="table table-striped"> <tr> <th>Key</th> <th>Type</th> <th>Size</th> <th>LastModified</th> </tr> <tr> <td><%= link_to '../', with_prefix(upper_dir(@prefix)) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> </tr> <% @objects.each do |object| %> <tr> <% if object.is_a?(Aliyun::OSS::Object) %> <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> <td><%= object.type %></td> <td><%= number_to_human_size(object.size) %></td> <td><%= object.last_modified.localtime.to_s %></td> <% else %> <td><%= link_to remove_prefix(object, @prefix), with_prefix(object) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> <% end %> </tr> <% end %></table> 上面的代码将文件按目录结构显示,主要逻辑是: 总是在第一个显示’../‘指向上级目录对于Common prefix,显示为目录对于Object,显示为文件 上面的代码中用到了with_prefix, remove_prefix等一些辅助函数,它们定义在app/helpers/objects_helper.rb中: module ObjectsHelper def with_prefix(prefix) "?prefix=#{prefix}" end def remove_prefix(key, prefix) key.sub(/^#{prefix}/, '') end def upper_dir(dir) dir.sub(/[^\/]+\/$/, '') if dir end def new_object_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/new/#{with_prefix(prefix)}" end def objects_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/#{with_prefix(prefix)}" endend 完成之后运行rails s,然后在浏览器中输入地址http://localhost:3000/buckets/my-bucket/objects/就可以查看文件列表了。 惯例保存代码: git add .git commit -m "add list objects feature"6. 下载文件注意到在上一步显示文件列表时,我们为每个文件也添加了一个链接: <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> 其中Bucket#object_url是一个为文件生成临时URL的方法,参考下载文件 7. 上传文件在Rails这种服务端应用中,用户上传文件有两种办法: 用户先将文件上传到Rails的服务器上,服务器再将文件上传到OSS。这样做需要Rails服务器作为中转,文件多拷贝了一遍,不是很高效。服务器为用户生成表单和临时凭证,用户直接上传文件到OSS。 第一种方法比较简单,与普通的上传文件一样。下面我们用的是第二种方法: 首先在app/controllers/objects_controller.rb中增加一个#new方法,用于生成上传表单: def new @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @options = { :prefix => @prefix, :redirect => 'http://localhost:3000/buckets/' }end 然后编辑app/views/objects/new.html.erb: <h2>Upload object</h2><%= upload_form(@bucket, @options) do %> <table class="table table-striped"> <tr> <td><label>Bucket:</label></td> <td><%= @bucket.name %></td> </tr> <tr> <td><label>Prefix:</label></td> <td><%= @prefix %></td> </tr> <tr> <td><label>Select file:</label></td> <td><input type="file" name="file" style="display:inline" /></td> </tr> <tr> <td colspan="2"> <input type="submit" class="btn btn-default" value="Upload" /> <span>&nbsp;&nbsp</span> <%= link_to 'Back', objects_path(@bucket_name, @prefix) %> </td> </tr> </table><% end %> 其中upload_form是SDK提供的一个方便用户生成上传表单的辅助函数,在SDK的代码rails/aliyun_oss_helper.rb中。用户需要将其拷贝到app/helpers/目录下。完成之后运行rails s,然后访问http://localhost:3000/buckets/my-bucket/objects/new就能够上传文件了。 最后记得保存代码: git add .git commit -m "add upload object feature"8. 添加样式为了让界面更好看一些,我们可以添加一点样式(CSS)。 首先下载bootstrap,解压后将bootstrap.min.css拷贝到app/assets/stylesheets/下。 然后在修改app/views/layouts/application.html.erb,将yield一行改成: <div id="main"> <%= yield %> </div> 这会为每个页面添加一个id为main的<div>,然后修改app/assets/stylesheets/application.css,加入以下内容: body { text-align: center;}div#main { text-align: left; width: 1024px; margin: 0 auto;} 这会让网页的主体内容居中显示。通过添加简单的样式,我们的页面是不是更加赏心悦目了呢? 至此,一个简单的demo就完成了。完整的demo代码请参看 Alibaba Cloud OSS Rails Demo。

2019-12-01 23:14:35 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档与Rails集成在Rails应用中使用OSS Ruby SDK只需要在Gemfile中添加以下依赖: gem 'aliyun-sdk', '~> 0.3.0然后在使用OSS时引入依赖就可以了: require 'aliyun/oss'另外,SDK的rails/目录下提供一些方便用户使用的辅助代码。 下面我们将利用SDK来实现一个简单的OSS文件管理器(oss-manager),最终包含以下功能: 列出用户所有的Bucket列出Bucket下所有的文件,按目录层级列出上传文件下载文件 1. 创建项目先安装Rails,然后创建一个Rails应用,oss-manager: gem install railsrails new oss-manager作为一个好的习惯,使用git管理项目代码: cd oss-managergit initgit add .git commit -m "init project"2. 添加SDK依赖编辑oss-manager/Gemfile,向其中加入SDK的依赖: gem 'aliyun-sdk', '~> 0.3.0'然后在oss-manager/下执行: bundle install保存这一步所做的更改: git add .git commit -m "add aliyun-sdk dependency"3. 初始化OSS Client为了避免在项目中用到OSS Client的地方都要初始化,我们在项目中添加一个初始化文件,方便在项目中使用OSS Client: # oss-manager/config/initializers/aliyun_oss_init.rbrequire 'aliyun/oss'module OSS def self.client unless @client Aliyun::Common::Logging.set_log_file('./log/oss_sdk.log') @client = Aliyun::OSS::Client.new( endpoint: Rails.application.secrets.aliyun_oss['endpoint'], access_key_id: Rails.application.secrets.aliyun_oss['access_key_id'], access_key_secret: Rails.application.secrets.aliyun_oss['access_key_secret'] ) end @client endend 上面的代码在SDK的rails/目录下可以找到。这样初始化后,在项目中使用OSSClient就非常方便: buckets = OSS.client.list_buckets其中endpoint和AccessKeyId/AccessKeySecret保存在oss-manager/conf/secrets.yml中,例如: development: secret_key_base: xxxx aliyun_oss: endpoint: xxxx access_key_id: aaaa access_key_secret: bbbb 保存代码: git add .git commit -m "add aliyun-sdk initializer"4. 实现List buckets功能首先用rails生成管理Buckets的controller: rails g controller buckets index这样会在oss-manager中生成以下文件: app/controller/buckets_controller.rb Buckets相关的逻辑代码app/views/buckets/index.html.erb Buckets相关的展示代码app/helpers/buckets_helper.rb 一些辅助函数 首先编辑buckets_controller.rb,调用OSS Client,将list_buckets的结果存放在@buckets变量中: class BucketsController < ApplicationController def index @buckets = OSS.client.list_buckets endend 然后编辑views/buckets/index.html.erb,将Bucket列表展示出来: <h1>Buckets</h1><table class="table table-striped"> <tr> <th>Name</th> <th>Location</th> <th>CreationTime</th> </tr> <% @buckets.each do |bucket| %> <tr> <td><%= link_to bucket.name, bucket_objects_path(bucket.name) %></td> <td><%= bucket.location %></td> <td><%= bucket.creation_time.localtime.to_s %></td> </tr> <% end %></table> 其中bucket_objects_path是一个辅助函数,在app/helpers/buckets_helper.rb中: module BucketsHelper def bucket_objects_path(bucket_name) "/buckets/#{bucket_name}/objects" endend 这样就完成了列出所有Bucket的功能。在运行之前,我们还需要配置Rails的路由,使得我们在浏览器中输入的地址能够调用正确的逻辑。编辑config/routes.rb,增加一条: resources :buckets do resources :objectsend好了,在oss-manager/下输入rails s以启动rails server,然后在浏览器中输入http://localhost:3000/buckets/就能看到Bucket列表了。 最后保存一下代码: git add .git commit -m "add list buckets feature"5. 实现List objects功能首先生成一个管理Objects的controller: rails g controller objects index然后编辑app/controllers/objects_controller.rb: class ObjectsController < ApplicationController def index @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @objects = @bucket.list_objects(:prefix => @prefix, :delimiter => '/') endend 上面的代码首先从URL的参数中获取Bucket名字,为了只按目录层级显示,我们还需要一个前缀。然后调用OSS Client的list_objects接口获取文件列表。注意,这里获取的是指定前缀下,并且以’/‘为分界的文件。这样做是为也按目录层级列出文件。请参考管理文件 接下来编辑app/views/objects/index.html.erb: <h1>Objects in <%= @bucket_name %></h1><p> <%= link_to 'Upload file', new_object_path(@bucket_name, @prefix) %></p><table class="table table-striped"> <tr> <th>Key</th> <th>Type</th> <th>Size</th> <th>LastModified</th> </tr> <tr> <td><%= link_to '../', with_prefix(upper_dir(@prefix)) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> </tr> <% @objects.each do |object| %> <tr> <% if object.is_a?(Aliyun::OSS::Object) %> <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> <td><%= object.type %></td> <td><%= number_to_human_size(object.size) %></td> <td><%= object.last_modified.localtime.to_s %></td> <% else %> <td><%= link_to remove_prefix(object, @prefix), with_prefix(object) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> <% end %> </tr> <% end %></table> 上面的代码将文件按目录结构显示,主要逻辑是: 总是在第一个显示’../‘指向上级目录对于Common prefix,显示为目录对于Object,显示为文件 上面的代码中用到了with_prefix, remove_prefix等一些辅助函数,它们定义在app/helpers/objects_helper.rb中: module ObjectsHelper def with_prefix(prefix) "?prefix=#{prefix}" end def remove_prefix(key, prefix) key.sub(/^#{prefix}/, '') end def upper_dir(dir) dir.sub(/[^\/]+\/$/, '') if dir end def new_object_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/new/#{with_prefix(prefix)}" end def objects_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/#{with_prefix(prefix)}" endend 完成之后运行rails s,然后在浏览器中输入地址http://localhost:3000/buckets/my-bucket/objects/就可以查看文件列表了。 惯例保存代码: git add .git commit -m "add list objects feature"6. 下载文件注意到在上一步显示文件列表时,我们为每个文件也添加了一个链接: <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> 其中Bucket#object_url是一个为文件生成临时URL的方法,参考下载文件 7. 上传文件在Rails这种服务端应用中,用户上传文件有两种办法: 用户先将文件上传到Rails的服务器上,服务器再将文件上传到OSS。这样做需要Rails服务器作为中转,文件多拷贝了一遍,不是很高效。服务器为用户生成表单和临时凭证,用户直接上传文件到OSS。 第一种方法比较简单,与普通的上传文件一样。下面我们用的是第二种方法: 首先在app/controllers/objects_controller.rb中增加一个#new方法,用于生成上传表单: def new @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @options = { :prefix => @prefix, :redirect => 'http://localhost:3000/buckets/' }end 然后编辑app/views/objects/new.html.erb: <h2>Upload object</h2><%= upload_form(@bucket, @options) do %> <table class="table table-striped"> <tr> <td><label>Bucket:</label></td> <td><%= @bucket.name %></td> </tr> <tr> <td><label>Prefix:</label></td> <td><%= @prefix %></td> </tr> <tr> <td><label>Select file:</label></td> <td><input type="file" name="file" style="display:inline" /></td> </tr> <tr> <td colspan="2"> <input type="submit" class="btn btn-default" value="Upload" /> <span>&nbsp;&nbsp</span> <%= link_to 'Back', objects_path(@bucket_name, @prefix) %> </td> </tr> </table><% end %> 其中upload_form是SDK提供的一个方便用户生成上传表单的辅助函数,在SDK的代码rails/aliyun_oss_helper.rb中。用户需要将其拷贝到app/helpers/目录下。完成之后运行rails s,然后访问http://localhost:3000/buckets/my-bucket/objects/new就能够上传文件了。 最后记得保存代码: git add .git commit -m "add upload object feature"8. 添加样式为了让界面更好看一些,我们可以添加一点样式(CSS)。 首先下载bootstrap,解压后将bootstrap.min.css拷贝到app/assets/stylesheets/下。 然后在修改app/views/layouts/application.html.erb,将yield一行改成: <div id="main"> <%= yield %> </div> 这会为每个页面添加一个id为main的<div>,然后修改app/assets/stylesheets/application.css,加入以下内容: body { text-align: center;}div#main { text-align: left; width: 1024px; margin: 0 auto;} 这会让网页的主体内容居中显示。通过添加简单的样式,我们的页面是不是更加赏心悦目了呢? 至此,一个简单的demo就完成了。完整的demo代码请参看 Alibaba Cloud OSS Rails Demo。

2019-12-01 23:14:36 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档与Rails集成在Rails应用中使用OSS Ruby SDK只需要在Gemfile中添加以下依赖: gem 'aliyun-sdk', '~> 0.3.0然后在使用OSS时引入依赖就可以了: require 'aliyun/oss'另外,SDK的rails/目录下提供一些方便用户使用的辅助代码。 下面我们将利用SDK来实现一个简单的OSS文件管理器(oss-manager),最终包含以下功能: 列出用户所有的Bucket列出Bucket下所有的文件,按目录层级列出上传文件下载文件 1. 创建项目先安装Rails,然后创建一个Rails应用,oss-manager: gem install railsrails new oss-manager作为一个好的习惯,使用git管理项目代码: cd oss-managergit initgit add .git commit -m "init project"2. 添加SDK依赖编辑oss-manager/Gemfile,向其中加入SDK的依赖: gem 'aliyun-sdk', '~> 0.3.0'然后在oss-manager/下执行: bundle install保存这一步所做的更改: git add .git commit -m "add aliyun-sdk dependency"3. 初始化OSS Client为了避免在项目中用到OSS Client的地方都要初始化,我们在项目中添加一个初始化文件,方便在项目中使用OSS Client: # oss-manager/config/initializers/aliyun_oss_init.rbrequire 'aliyun/oss'module OSS def self.client unless @client Aliyun::Common::Logging.set_log_file('./log/oss_sdk.log') @client = Aliyun::OSS::Client.new( endpoint: Rails.application.secrets.aliyun_oss['endpoint'], access_key_id: Rails.application.secrets.aliyun_oss['access_key_id'], access_key_secret: Rails.application.secrets.aliyun_oss['access_key_secret'] ) end @client endend 上面的代码在SDK的rails/目录下可以找到。这样初始化后,在项目中使用OSSClient就非常方便: buckets = OSS.client.list_buckets其中endpoint和AccessKeyId/AccessKeySecret保存在oss-manager/conf/secrets.yml中,例如: development: secret_key_base: xxxx aliyun_oss: endpoint: xxxx access_key_id: aaaa access_key_secret: bbbb 保存代码: git add .git commit -m "add aliyun-sdk initializer"4. 实现List buckets功能首先用rails生成管理Buckets的controller: rails g controller buckets index这样会在oss-manager中生成以下文件: app/controller/buckets_controller.rb Buckets相关的逻辑代码app/views/buckets/index.html.erb Buckets相关的展示代码app/helpers/buckets_helper.rb 一些辅助函数 首先编辑buckets_controller.rb,调用OSS Client,将list_buckets的结果存放在@buckets变量中: class BucketsController < ApplicationController def index @buckets = OSS.client.list_buckets endend 然后编辑views/buckets/index.html.erb,将Bucket列表展示出来: <h1>Buckets</h1><table class="table table-striped"> <tr> <th>Name</th> <th>Location</th> <th>CreationTime</th> </tr> <% @buckets.each do |bucket| %> <tr> <td><%= link_to bucket.name, bucket_objects_path(bucket.name) %></td> <td><%= bucket.location %></td> <td><%= bucket.creation_time.localtime.to_s %></td> </tr> <% end %></table> 其中bucket_objects_path是一个辅助函数,在app/helpers/buckets_helper.rb中: module BucketsHelper def bucket_objects_path(bucket_name) "/buckets/#{bucket_name}/objects" endend 这样就完成了列出所有Bucket的功能。在运行之前,我们还需要配置Rails的路由,使得我们在浏览器中输入的地址能够调用正确的逻辑。编辑config/routes.rb,增加一条: resources :buckets do resources :objectsend好了,在oss-manager/下输入rails s以启动rails server,然后在浏览器中输入http://localhost:3000/buckets/就能看到Bucket列表了。 最后保存一下代码: git add .git commit -m "add list buckets feature"5. 实现List objects功能首先生成一个管理Objects的controller: rails g controller objects index然后编辑app/controllers/objects_controller.rb: class ObjectsController < ApplicationController def index @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @objects = @bucket.list_objects(:prefix => @prefix, :delimiter => '/') endend 上面的代码首先从URL的参数中获取Bucket名字,为了只按目录层级显示,我们还需要一个前缀。然后调用OSS Client的list_objects接口获取文件列表。注意,这里获取的是指定前缀下,并且以’/‘为分界的文件。这样做是为也按目录层级列出文件。请参考管理文件 接下来编辑app/views/objects/index.html.erb: <h1>Objects in <%= @bucket_name %></h1><p> <%= link_to 'Upload file', new_object_path(@bucket_name, @prefix) %></p><table class="table table-striped"> <tr> <th>Key</th> <th>Type</th> <th>Size</th> <th>LastModified</th> </tr> <tr> <td><%= link_to '../', with_prefix(upper_dir(@prefix)) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> </tr> <% @objects.each do |object| %> <tr> <% if object.is_a?(Aliyun::OSS::Object) %> <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> <td><%= object.type %></td> <td><%= number_to_human_size(object.size) %></td> <td><%= object.last_modified.localtime.to_s %></td> <% else %> <td><%= link_to remove_prefix(object, @prefix), with_prefix(object) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> <% end %> </tr> <% end %></table> 上面的代码将文件按目录结构显示,主要逻辑是: 总是在第一个显示’../‘指向上级目录对于Common prefix,显示为目录对于Object,显示为文件 上面的代码中用到了with_prefix, remove_prefix等一些辅助函数,它们定义在app/helpers/objects_helper.rb中: module ObjectsHelper def with_prefix(prefix) "?prefix=#{prefix}" end def remove_prefix(key, prefix) key.sub(/^#{prefix}/, '') end def upper_dir(dir) dir.sub(/[^\/]+\/$/, '') if dir end def new_object_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/new/#{with_prefix(prefix)}" end def objects_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/#{with_prefix(prefix)}" endend 完成之后运行rails s,然后在浏览器中输入地址http://localhost:3000/buckets/my-bucket/objects/就可以查看文件列表了。 惯例保存代码: git add .git commit -m "add list objects feature"6. 下载文件注意到在上一步显示文件列表时,我们为每个文件也添加了一个链接: <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> 其中Bucket#object_url是一个为文件生成临时URL的方法,参考下载文件 7. 上传文件在Rails这种服务端应用中,用户上传文件有两种办法: 用户先将文件上传到Rails的服务器上,服务器再将文件上传到OSS。这样做需要Rails服务器作为中转,文件多拷贝了一遍,不是很高效。服务器为用户生成表单和临时凭证,用户直接上传文件到OSS。 第一种方法比较简单,与普通的上传文件一样。下面我们用的是第二种方法: 首先在app/controllers/objects_controller.rb中增加一个#new方法,用于生成上传表单: def new @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @options = { :prefix => @prefix, :redirect => 'http://localhost:3000/buckets/' }end 然后编辑app/views/objects/new.html.erb: <h2>Upload object</h2><%= upload_form(@bucket, @options) do %> <table class="table table-striped"> <tr> <td><label>Bucket:</label></td> <td><%= @bucket.name %></td> </tr> <tr> <td><label>Prefix:</label></td> <td><%= @prefix %></td> </tr> <tr> <td><label>Select file:</label></td> <td><input type="file" name="file" style="display:inline" /></td> </tr> <tr> <td colspan="2"> <input type="submit" class="btn btn-default" value="Upload" /> <span>&nbsp;&nbsp</span> <%= link_to 'Back', objects_path(@bucket_name, @prefix) %> </td> </tr> </table><% end %> 其中upload_form是SDK提供的一个方便用户生成上传表单的辅助函数,在SDK的代码rails/aliyun_oss_helper.rb中。用户需要将其拷贝到app/helpers/目录下。完成之后运行rails s,然后访问http://localhost:3000/buckets/my-bucket/objects/new就能够上传文件了。 最后记得保存代码: git add .git commit -m "add upload object feature"8. 添加样式为了让界面更好看一些,我们可以添加一点样式(CSS)。 首先下载bootstrap,解压后将bootstrap.min.css拷贝到app/assets/stylesheets/下。 然后在修改app/views/layouts/application.html.erb,将yield一行改成: <div id="main"> <%= yield %> </div> 这会为每个页面添加一个id为main的<div>,然后修改app/assets/stylesheets/application.css,加入以下内容: body { text-align: center;}div#main { text-align: left; width: 1024px; margin: 0 auto;} 这会让网页的主体内容居中显示。通过添加简单的样式,我们的页面是不是更加赏心悦目了呢? 至此,一个简单的demo就完成了。完整的demo代码请参看 Alibaba Cloud OSS Rails Demo。

2019-12-01 23:14:34 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

详细解答可以参考官方帮助文档与Rails集成在Rails应用中使用OSS Ruby SDK只需要在Gemfile中添加以下依赖: gem 'aliyun-sdk', '~> 0.3.0然后在使用OSS时引入依赖就可以了: require 'aliyun/oss'另外,SDK的rails/目录下提供一些方便用户使用的辅助代码。 下面我们将利用SDK来实现一个简单的OSS文件管理器(oss-manager),最终包含以下功能: 列出用户所有的Bucket列出Bucket下所有的文件,按目录层级列出上传文件下载文件 1. 创建项目先安装Rails,然后创建一个Rails应用,oss-manager: gem install railsrails new oss-manager作为一个好的习惯,使用git管理项目代码: cd oss-managergit initgit add .git commit -m "init project"2. 添加SDK依赖编辑oss-manager/Gemfile,向其中加入SDK的依赖: gem 'aliyun-sdk', '~> 0.3.0'然后在oss-manager/下执行: bundle install保存这一步所做的更改: git add .git commit -m "add aliyun-sdk dependency"3. 初始化OSS Client为了避免在项目中用到OSS Client的地方都要初始化,我们在项目中添加一个初始化文件,方便在项目中使用OSS Client: # oss-manager/config/initializers/aliyun_oss_init.rbrequire 'aliyun/oss'module OSS def self.client unless @client Aliyun::Common::Logging.set_log_file('./log/oss_sdk.log') @client = Aliyun::OSS::Client.new( endpoint: Rails.application.secrets.aliyun_oss['endpoint'], access_key_id: Rails.application.secrets.aliyun_oss['access_key_id'], access_key_secret: Rails.application.secrets.aliyun_oss['access_key_secret'] ) end @client endend 上面的代码在SDK的rails/目录下可以找到。这样初始化后,在项目中使用OSSClient就非常方便: buckets = OSS.client.list_buckets其中endpoint和AccessKeyId/AccessKeySecret保存在oss-manager/conf/secrets.yml中,例如: development: secret_key_base: xxxx aliyun_oss: endpoint: xxxx access_key_id: aaaa access_key_secret: bbbb 保存代码: git add .git commit -m "add aliyun-sdk initializer"4. 实现List buckets功能首先用rails生成管理Buckets的controller: rails g controller buckets index这样会在oss-manager中生成以下文件: app/controller/buckets_controller.rb Buckets相关的逻辑代码app/views/buckets/index.html.erb Buckets相关的展示代码app/helpers/buckets_helper.rb 一些辅助函数 首先编辑buckets_controller.rb,调用OSS Client,将list_buckets的结果存放在@buckets变量中: class BucketsController < ApplicationController def index @buckets = OSS.client.list_buckets endend 然后编辑views/buckets/index.html.erb,将Bucket列表展示出来: <h1>Buckets</h1><table class="table table-striped"> <tr> <th>Name</th> <th>Location</th> <th>CreationTime</th> </tr> <% @buckets.each do |bucket| %> <tr> <td><%= link_to bucket.name, bucket_objects_path(bucket.name) %></td> <td><%= bucket.location %></td> <td><%= bucket.creation_time.localtime.to_s %></td> </tr> <% end %></table> 其中bucket_objects_path是一个辅助函数,在app/helpers/buckets_helper.rb中: module BucketsHelper def bucket_objects_path(bucket_name) "/buckets/#{bucket_name}/objects" endend 这样就完成了列出所有Bucket的功能。在运行之前,我们还需要配置Rails的路由,使得我们在浏览器中输入的地址能够调用正确的逻辑。编辑config/routes.rb,增加一条: resources :buckets do resources :objectsend好了,在oss-manager/下输入rails s以启动rails server,然后在浏览器中输入http://localhost:3000/buckets/就能看到Bucket列表了。 最后保存一下代码: git add .git commit -m "add list buckets feature"5. 实现List objects功能首先生成一个管理Objects的controller: rails g controller objects index然后编辑app/controllers/objects_controller.rb: class ObjectsController < ApplicationController def index @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @objects = @bucket.list_objects(:prefix => @prefix, :delimiter => '/') endend 上面的代码首先从URL的参数中获取Bucket名字,为了只按目录层级显示,我们还需要一个前缀。然后调用OSS Client的list_objects接口获取文件列表。注意,这里获取的是指定前缀下,并且以’/‘为分界的文件。这样做是为也按目录层级列出文件。请参考管理文件 接下来编辑app/views/objects/index.html.erb: <h1>Objects in <%= @bucket_name %></h1><p> <%= link_to 'Upload file', new_object_path(@bucket_name, @prefix) %></p><table class="table table-striped"> <tr> <th>Key</th> <th>Type</th> <th>Size</th> <th>LastModified</th> </tr> <tr> <td><%= link_to '../', with_prefix(upper_dir(@prefix)) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> </tr> <% @objects.each do |object| %> <tr> <% if object.is_a?(Aliyun::OSS::Object) %> <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> <td><%= object.type %></td> <td><%= number_to_human_size(object.size) %></td> <td><%= object.last_modified.localtime.to_s %></td> <% else %> <td><%= link_to remove_prefix(object, @prefix), with_prefix(object) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> <% end %> </tr> <% end %></table> 上面的代码将文件按目录结构显示,主要逻辑是: 总是在第一个显示’../‘指向上级目录对于Common prefix,显示为目录对于Object,显示为文件 上面的代码中用到了with_prefix, remove_prefix等一些辅助函数,它们定义在app/helpers/objects_helper.rb中: module ObjectsHelper def with_prefix(prefix) "?prefix=#{prefix}" end def remove_prefix(key, prefix) key.sub(/^#{prefix}/, '') end def upper_dir(dir) dir.sub(/[^\/]+\/$/, '') if dir end def new_object_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/new/#{with_prefix(prefix)}" end def objects_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/#{with_prefix(prefix)}" endend 完成之后运行rails s,然后在浏览器中输入地址http://localhost:3000/buckets/my-bucket/objects/就可以查看文件列表了。 惯例保存代码: git add .git commit -m "add list objects feature"6. 下载文件注意到在上一步显示文件列表时,我们为每个文件也添加了一个链接: <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> 其中Bucket#object_url是一个为文件生成临时URL的方法,参考下载文件 7. 上传文件在Rails这种服务端应用中,用户上传文件有两种办法: 用户先将文件上传到Rails的服务器上,服务器再将文件上传到OSS。这样做需要Rails服务器作为中转,文件多拷贝了一遍,不是很高效。服务器为用户生成表单和临时凭证,用户直接上传文件到OSS。 第一种方法比较简单,与普通的上传文件一样。下面我们用的是第二种方法: 首先在app/controllers/objects_controller.rb中增加一个#new方法,用于生成上传表单: def new @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @options = { :prefix => @prefix, :redirect => 'http://localhost:3000/buckets/' }end 然后编辑app/views/objects/new.html.erb: <h2>Upload object</h2><%= upload_form(@bucket, @options) do %> <table class="table table-striped"> <tr> <td><label>Bucket:</label></td> <td><%= @bucket.name %></td> </tr> <tr> <td><label>Prefix:</label></td> <td><%= @prefix %></td> </tr> <tr> <td><label>Select file:</label></td> <td><input type="file" name="file" style="display:inline" /></td> </tr> <tr> <td colspan="2"> <input type="submit" class="btn btn-default" value="Upload" /> <span>&nbsp;&nbsp</span> <%= link_to 'Back', objects_path(@bucket_name, @prefix) %> </td> </tr> </table><% end %> 其中upload_form是SDK提供的一个方便用户生成上传表单的辅助函数,在SDK的代码rails/aliyun_oss_helper.rb中。用户需要将其拷贝到app/helpers/目录下。完成之后运行rails s,然后访问http://localhost:3000/buckets/my-bucket/objects/new就能够上传文件了。 最后记得保存代码: git add .git commit -m "add upload object feature"8. 添加样式为了让界面更好看一些,我们可以添加一点样式(CSS)。 首先下载bootstrap,解压后将bootstrap.min.css拷贝到app/assets/stylesheets/下。 然后在修改app/views/layouts/application.html.erb,将yield一行改成: <div id="main"> <%= yield %> </div> 这会为每个页面添加一个id为main的<div>,然后修改app/assets/stylesheets/application.css,加入以下内容: body { text-align: center;}div#main { text-align: left; width: 1024px; margin: 0 auto;} 这会让网页的主体内容居中显示。通过添加简单的样式,我们的页面是不是更加赏心悦目了呢? 至此,一个简单的demo就完成了。完整的demo代码请参看 Alibaba Cloud OSS Rails Demo。

2019-12-01 23:14:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档与Rails集成在Rails应用中使用OSS Ruby SDK只需要在Gemfile中添加以下依赖: gem 'aliyun-sdk', '~> 0.3.0然后在使用OSS时引入依赖就可以了: require 'aliyun/oss'另外,SDK的rails/目录下提供一些方便用户使用的辅助代码。 下面我们将利用SDK来实现一个简单的OSS文件管理器(oss-manager),最终包含以下功能: 列出用户所有的Bucket列出Bucket下所有的文件,按目录层级列出上传文件下载文件 1. 创建项目先安装Rails,然后创建一个Rails应用,oss-manager: gem install railsrails new oss-manager作为一个好的习惯,使用git管理项目代码: cd oss-managergit initgit add .git commit -m "init project"2. 添加SDK依赖编辑oss-manager/Gemfile,向其中加入SDK的依赖: gem 'aliyun-sdk', '~> 0.3.0'然后在oss-manager/下执行: bundle install保存这一步所做的更改: git add .git commit -m "add aliyun-sdk dependency"3. 初始化OSS Client为了避免在项目中用到OSS Client的地方都要初始化,我们在项目中添加一个初始化文件,方便在项目中使用OSS Client: # oss-manager/config/initializers/aliyun_oss_init.rbrequire 'aliyun/oss'module OSS def self.client unless @client Aliyun::Common::Logging.set_log_file('./log/oss_sdk.log') @client = Aliyun::OSS::Client.new( endpoint: Rails.application.secrets.aliyun_oss['endpoint'], access_key_id: Rails.application.secrets.aliyun_oss['access_key_id'], access_key_secret: Rails.application.secrets.aliyun_oss['access_key_secret'] ) end @client endend 上面的代码在SDK的rails/目录下可以找到。这样初始化后,在项目中使用OSSClient就非常方便: buckets = OSS.client.list_buckets其中endpoint和AccessKeyId/AccessKeySecret保存在oss-manager/conf/secrets.yml中,例如: development: secret_key_base: xxxx aliyun_oss: endpoint: xxxx access_key_id: aaaa access_key_secret: bbbb 保存代码: git add .git commit -m "add aliyun-sdk initializer"4. 实现List buckets功能首先用rails生成管理Buckets的controller: rails g controller buckets index这样会在oss-manager中生成以下文件: app/controller/buckets_controller.rb Buckets相关的逻辑代码app/views/buckets/index.html.erb Buckets相关的展示代码app/helpers/buckets_helper.rb 一些辅助函数 首先编辑buckets_controller.rb,调用OSS Client,将list_buckets的结果存放在@buckets变量中: class BucketsController < ApplicationController def index @buckets = OSS.client.list_buckets endend 然后编辑views/buckets/index.html.erb,将Bucket列表展示出来: <h1>Buckets</h1><table class="table table-striped"> <tr> <th>Name</th> <th>Location</th> <th>CreationTime</th> </tr> <% @buckets.each do |bucket| %> <tr> <td><%= link_to bucket.name, bucket_objects_path(bucket.name) %></td> <td><%= bucket.location %></td> <td><%= bucket.creation_time.localtime.to_s %></td> </tr> <% end %></table> 其中bucket_objects_path是一个辅助函数,在app/helpers/buckets_helper.rb中: module BucketsHelper def bucket_objects_path(bucket_name) "/buckets/#{bucket_name}/objects" endend 这样就完成了列出所有Bucket的功能。在运行之前,我们还需要配置Rails的路由,使得我们在浏览器中输入的地址能够调用正确的逻辑。编辑config/routes.rb,增加一条: resources :buckets do resources :objectsend好了,在oss-manager/下输入rails s以启动rails server,然后在浏览器中输入http://localhost:3000/buckets/就能看到Bucket列表了。 最后保存一下代码: git add .git commit -m "add list buckets feature"5. 实现List objects功能首先生成一个管理Objects的controller: rails g controller objects index然后编辑app/controllers/objects_controller.rb: class ObjectsController < ApplicationController def index @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @objects = @bucket.list_objects(:prefix => @prefix, :delimiter => '/') endend 上面的代码首先从URL的参数中获取Bucket名字,为了只按目录层级显示,我们还需要一个前缀。然后调用OSS Client的list_objects接口获取文件列表。注意,这里获取的是指定前缀下,并且以’/‘为分界的文件。这样做是为也按目录层级列出文件。请参考管理文件 接下来编辑app/views/objects/index.html.erb: <h1>Objects in <%= @bucket_name %></h1><p> <%= link_to 'Upload file', new_object_path(@bucket_name, @prefix) %></p><table class="table table-striped"> <tr> <th>Key</th> <th>Type</th> <th>Size</th> <th>LastModified</th> </tr> <tr> <td><%= link_to '../', with_prefix(upper_dir(@prefix)) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> </tr> <% @objects.each do |object| %> <tr> <% if object.is_a?(Aliyun::OSS::Object) %> <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> <td><%= object.type %></td> <td><%= number_to_human_size(object.size) %></td> <td><%= object.last_modified.localtime.to_s %></td> <% else %> <td><%= link_to remove_prefix(object, @prefix), with_prefix(object) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> <% end %> </tr> <% end %></table> 上面的代码将文件按目录结构显示,主要逻辑是: 总是在第一个显示’../‘指向上级目录对于Common prefix,显示为目录对于Object,显示为文件 上面的代码中用到了with_prefix, remove_prefix等一些辅助函数,它们定义在app/helpers/objects_helper.rb中: module ObjectsHelper def with_prefix(prefix) "?prefix=#{prefix}" end def remove_prefix(key, prefix) key.sub(/^#{prefix}/, '') end def upper_dir(dir) dir.sub(/[^\/]+\/$/, '') if dir end def new_object_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/new/#{with_prefix(prefix)}" end def objects_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/#{with_prefix(prefix)}" endend 完成之后运行rails s,然后在浏览器中输入地址http://localhost:3000/buckets/my-bucket/objects/就可以查看文件列表了。 惯例保存代码: git add .git commit -m "add list objects feature"6. 下载文件注意到在上一步显示文件列表时,我们为每个文件也添加了一个链接: <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> 其中Bucket#object_url是一个为文件生成临时URL的方法,参考下载文件 7. 上传文件在Rails这种服务端应用中,用户上传文件有两种办法: 用户先将文件上传到Rails的服务器上,服务器再将文件上传到OSS。这样做需要Rails服务器作为中转,文件多拷贝了一遍,不是很高效。服务器为用户生成表单和临时凭证,用户直接上传文件到OSS。 第一种方法比较简单,与普通的上传文件一样。下面我们用的是第二种方法: 首先在app/controllers/objects_controller.rb中增加一个#new方法,用于生成上传表单: def new @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @options = { :prefix => @prefix, :redirect => 'http://localhost:3000/buckets/' }end 然后编辑app/views/objects/new.html.erb: <h2>Upload object</h2><%= upload_form(@bucket, @options) do %> <table class="table table-striped"> <tr> <td><label>Bucket:</label></td> <td><%= @bucket.name %></td> </tr> <tr> <td><label>Prefix:</label></td> <td><%= @prefix %></td> </tr> <tr> <td><label>Select file:</label></td> <td><input type="file" name="file" style="display:inline" /></td> </tr> <tr> <td colspan="2"> <input type="submit" class="btn btn-default" value="Upload" /> <span>&nbsp;&nbsp</span> <%= link_to 'Back', objects_path(@bucket_name, @prefix) %> </td> </tr> </table><% end %> 其中upload_form是SDK提供的一个方便用户生成上传表单的辅助函数,在SDK的代码rails/aliyun_oss_helper.rb中。用户需要将其拷贝到app/helpers/目录下。完成之后运行rails s,然后访问http://localhost:3000/buckets/my-bucket/objects/new就能够上传文件了。 最后记得保存代码: git add .git commit -m "add upload object feature"8. 添加样式为了让界面更好看一些,我们可以添加一点样式(CSS)。 首先下载bootstrap,解压后将bootstrap.min.css拷贝到app/assets/stylesheets/下。 然后在修改app/views/layouts/application.html.erb,将yield一行改成: <div id="main"> <%= yield %> </div> 这会为每个页面添加一个id为main的<div>,然后修改app/assets/stylesheets/application.css,加入以下内容: body { text-align: center;}div#main { text-align: left; width: 1024px; margin: 0 auto;} 这会让网页的主体内容居中显示。通过添加简单的样式,我们的页面是不是更加赏心悦目了呢? 至此,一个简单的demo就完成了。完整的demo代码请参看 Alibaba Cloud OSS Rails Demo。

2019-12-01 23:14:35 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档与Rails集成在Rails应用中使用OSS Ruby SDK只需要在Gemfile中添加以下依赖: gem 'aliyun-sdk', '~> 0.3.0然后在使用OSS时引入依赖就可以了: require 'aliyun/oss'另外,SDK的rails/目录下提供一些方便用户使用的辅助代码。 下面我们将利用SDK来实现一个简单的OSS文件管理器(oss-manager),最终包含以下功能: 列出用户所有的Bucket列出Bucket下所有的文件,按目录层级列出上传文件下载文件 1. 创建项目先安装Rails,然后创建一个Rails应用,oss-manager: gem install railsrails new oss-manager作为一个好的习惯,使用git管理项目代码: cd oss-managergit initgit add .git commit -m "init project"2. 添加SDK依赖编辑oss-manager/Gemfile,向其中加入SDK的依赖: gem 'aliyun-sdk', '~> 0.3.0'然后在oss-manager/下执行: bundle install保存这一步所做的更改: git add .git commit -m "add aliyun-sdk dependency"3. 初始化OSS Client为了避免在项目中用到OSS Client的地方都要初始化,我们在项目中添加一个初始化文件,方便在项目中使用OSS Client: # oss-manager/config/initializers/aliyun_oss_init.rbrequire 'aliyun/oss'module OSS def self.client unless @client Aliyun::Common::Logging.set_log_file('./log/oss_sdk.log') @client = Aliyun::OSS::Client.new( endpoint: Rails.application.secrets.aliyun_oss['endpoint'], access_key_id: Rails.application.secrets.aliyun_oss['access_key_id'], access_key_secret: Rails.application.secrets.aliyun_oss['access_key_secret'] ) end @client endend 上面的代码在SDK的rails/目录下可以找到。这样初始化后,在项目中使用OSSClient就非常方便: buckets = OSS.client.list_buckets其中endpoint和AccessKeyId/AccessKeySecret保存在oss-manager/conf/secrets.yml中,例如: development: secret_key_base: xxxx aliyun_oss: endpoint: xxxx access_key_id: aaaa access_key_secret: bbbb 保存代码: git add .git commit -m "add aliyun-sdk initializer"4. 实现List buckets功能首先用rails生成管理Buckets的controller: rails g controller buckets index这样会在oss-manager中生成以下文件: app/controller/buckets_controller.rb Buckets相关的逻辑代码app/views/buckets/index.html.erb Buckets相关的展示代码app/helpers/buckets_helper.rb 一些辅助函数 首先编辑buckets_controller.rb,调用OSS Client,将list_buckets的结果存放在@buckets变量中: class BucketsController < ApplicationController def index @buckets = OSS.client.list_buckets endend 然后编辑views/buckets/index.html.erb,将Bucket列表展示出来: <h1>Buckets</h1><table class="table table-striped"> <tr> <th>Name</th> <th>Location</th> <th>CreationTime</th> </tr> <% @buckets.each do |bucket| %> <tr> <td><%= link_to bucket.name, bucket_objects_path(bucket.name) %></td> <td><%= bucket.location %></td> <td><%= bucket.creation_time.localtime.to_s %></td> </tr> <% end %></table> 其中bucket_objects_path是一个辅助函数,在app/helpers/buckets_helper.rb中: module BucketsHelper def bucket_objects_path(bucket_name) "/buckets/#{bucket_name}/objects" endend 这样就完成了列出所有Bucket的功能。在运行之前,我们还需要配置Rails的路由,使得我们在浏览器中输入的地址能够调用正确的逻辑。编辑config/routes.rb,增加一条: resources :buckets do resources :objectsend好了,在oss-manager/下输入rails s以启动rails server,然后在浏览器中输入http://localhost:3000/buckets/就能看到Bucket列表了。 最后保存一下代码: git add .git commit -m "add list buckets feature"5. 实现List objects功能首先生成一个管理Objects的controller: rails g controller objects index然后编辑app/controllers/objects_controller.rb: class ObjectsController < ApplicationController def index @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @objects = @bucket.list_objects(:prefix => @prefix, :delimiter => '/') endend 上面的代码首先从URL的参数中获取Bucket名字,为了只按目录层级显示,我们还需要一个前缀。然后调用OSS Client的list_objects接口获取文件列表。注意,这里获取的是指定前缀下,并且以’/‘为分界的文件。这样做是为也按目录层级列出文件。请参考管理文件 接下来编辑app/views/objects/index.html.erb: <h1>Objects in <%= @bucket_name %></h1><p> <%= link_to 'Upload file', new_object_path(@bucket_name, @prefix) %></p><table class="table table-striped"> <tr> <th>Key</th> <th>Type</th> <th>Size</th> <th>LastModified</th> </tr> <tr> <td><%= link_to '../', with_prefix(upper_dir(@prefix)) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> </tr> <% @objects.each do |object| %> <tr> <% if object.is_a?(Aliyun::OSS::Object) %> <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> <td><%= object.type %></td> <td><%= number_to_human_size(object.size) %></td> <td><%= object.last_modified.localtime.to_s %></td> <% else %> <td><%= link_to remove_prefix(object, @prefix), with_prefix(object) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> <% end %> </tr> <% end %></table> 上面的代码将文件按目录结构显示,主要逻辑是: 总是在第一个显示’../‘指向上级目录对于Common prefix,显示为目录对于Object,显示为文件 上面的代码中用到了with_prefix, remove_prefix等一些辅助函数,它们定义在app/helpers/objects_helper.rb中: module ObjectsHelper def with_prefix(prefix) "?prefix=#{prefix}" end def remove_prefix(key, prefix) key.sub(/^#{prefix}/, '') end def upper_dir(dir) dir.sub(/[^\/]+\/$/, '') if dir end def new_object_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/new/#{with_prefix(prefix)}" end def objects_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/#{with_prefix(prefix)}" endend 完成之后运行rails s,然后在浏览器中输入地址http://localhost:3000/buckets/my-bucket/objects/就可以查看文件列表了。 惯例保存代码: git add .git commit -m "add list objects feature"6. 下载文件注意到在上一步显示文件列表时,我们为每个文件也添加了一个链接: <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> 其中Bucket#object_url是一个为文件生成临时URL的方法,参考下载文件 7. 上传文件在Rails这种服务端应用中,用户上传文件有两种办法: 用户先将文件上传到Rails的服务器上,服务器再将文件上传到OSS。这样做需要Rails服务器作为中转,文件多拷贝了一遍,不是很高效。服务器为用户生成表单和临时凭证,用户直接上传文件到OSS。 第一种方法比较简单,与普通的上传文件一样。下面我们用的是第二种方法: 首先在app/controllers/objects_controller.rb中增加一个#new方法,用于生成上传表单: def new @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @options = { :prefix => @prefix, :redirect => 'http://localhost:3000/buckets/' }end 然后编辑app/views/objects/new.html.erb: <h2>Upload object</h2><%= upload_form(@bucket, @options) do %> <table class="table table-striped"> <tr> <td><label>Bucket:</label></td> <td><%= @bucket.name %></td> </tr> <tr> <td><label>Prefix:</label></td> <td><%= @prefix %></td> </tr> <tr> <td><label>Select file:</label></td> <td><input type="file" name="file" style="display:inline" /></td> </tr> <tr> <td colspan="2"> <input type="submit" class="btn btn-default" value="Upload" /> <span>&nbsp;&nbsp</span> <%= link_to 'Back', objects_path(@bucket_name, @prefix) %> </td> </tr> </table><% end %> 其中upload_form是SDK提供的一个方便用户生成上传表单的辅助函数,在SDK的代码rails/aliyun_oss_helper.rb中。用户需要将其拷贝到app/helpers/目录下。完成之后运行rails s,然后访问http://localhost:3000/buckets/my-bucket/objects/new就能够上传文件了。 最后记得保存代码: git add .git commit -m "add upload object feature"8. 添加样式为了让界面更好看一些,我们可以添加一点样式(CSS)。 首先下载bootstrap,解压后将bootstrap.min.css拷贝到app/assets/stylesheets/下。 然后在修改app/views/layouts/application.html.erb,将yield一行改成: <div id="main"> <%= yield %> </div> 这会为每个页面添加一个id为main的<div>,然后修改app/assets/stylesheets/application.css,加入以下内容: body { text-align: center;}div#main { text-align: left; width: 1024px; margin: 0 auto;} 这会让网页的主体内容居中显示。通过添加简单的样式,我们的页面是不是更加赏心悦目了呢? 至此,一个简单的demo就完成了。完整的demo代码请参看 Alibaba Cloud OSS Rails Demo。

2019-12-01 23:14:35 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档与Rails集成在Rails应用中使用OSS Ruby SDK只需要在Gemfile中添加以下依赖: gem 'aliyun-sdk', '~> 0.3.0然后在使用OSS时引入依赖就可以了: require 'aliyun/oss'另外,SDK的rails/目录下提供一些方便用户使用的辅助代码。 下面我们将利用SDK来实现一个简单的OSS文件管理器(oss-manager),最终包含以下功能: 列出用户所有的Bucket列出Bucket下所有的文件,按目录层级列出上传文件下载文件 1. 创建项目先安装Rails,然后创建一个Rails应用,oss-manager: gem install railsrails new oss-manager作为一个好的习惯,使用git管理项目代码: cd oss-managergit initgit add .git commit -m "init project"2. 添加SDK依赖编辑oss-manager/Gemfile,向其中加入SDK的依赖: gem 'aliyun-sdk', '~> 0.3.0'然后在oss-manager/下执行: bundle install保存这一步所做的更改: git add .git commit -m "add aliyun-sdk dependency"3. 初始化OSS Client为了避免在项目中用到OSS Client的地方都要初始化,我们在项目中添加一个初始化文件,方便在项目中使用OSS Client: # oss-manager/config/initializers/aliyun_oss_init.rbrequire 'aliyun/oss'module OSS def self.client unless @client Aliyun::Common::Logging.set_log_file('./log/oss_sdk.log') @client = Aliyun::OSS::Client.new( endpoint: Rails.application.secrets.aliyun_oss['endpoint'], access_key_id: Rails.application.secrets.aliyun_oss['access_key_id'], access_key_secret: Rails.application.secrets.aliyun_oss['access_key_secret'] ) end @client endend 上面的代码在SDK的rails/目录下可以找到。这样初始化后,在项目中使用OSSClient就非常方便: buckets = OSS.client.list_buckets其中endpoint和AccessKeyId/AccessKeySecret保存在oss-manager/conf/secrets.yml中,例如: development: secret_key_base: xxxx aliyun_oss: endpoint: xxxx access_key_id: aaaa access_key_secret: bbbb 保存代码: git add .git commit -m "add aliyun-sdk initializer"4. 实现List buckets功能首先用rails生成管理Buckets的controller: rails g controller buckets index这样会在oss-manager中生成以下文件: app/controller/buckets_controller.rb Buckets相关的逻辑代码app/views/buckets/index.html.erb Buckets相关的展示代码app/helpers/buckets_helper.rb 一些辅助函数 首先编辑buckets_controller.rb,调用OSS Client,将list_buckets的结果存放在@buckets变量中: class BucketsController < ApplicationController def index @buckets = OSS.client.list_buckets endend 然后编辑views/buckets/index.html.erb,将Bucket列表展示出来: <h1>Buckets</h1><table class="table table-striped"> <tr> <th>Name</th> <th>Location</th> <th>CreationTime</th> </tr> <% @buckets.each do |bucket| %> <tr> <td><%= link_to bucket.name, bucket_objects_path(bucket.name) %></td> <td><%= bucket.location %></td> <td><%= bucket.creation_time.localtime.to_s %></td> </tr> <% end %></table> 其中bucket_objects_path是一个辅助函数,在app/helpers/buckets_helper.rb中: module BucketsHelper def bucket_objects_path(bucket_name) "/buckets/#{bucket_name}/objects" endend 这样就完成了列出所有Bucket的功能。在运行之前,我们还需要配置Rails的路由,使得我们在浏览器中输入的地址能够调用正确的逻辑。编辑config/routes.rb,增加一条: resources :buckets do resources :objectsend好了,在oss-manager/下输入rails s以启动rails server,然后在浏览器中输入http://localhost:3000/buckets/就能看到Bucket列表了。 最后保存一下代码: git add .git commit -m "add list buckets feature"5. 实现List objects功能首先生成一个管理Objects的controller: rails g controller objects index然后编辑app/controllers/objects_controller.rb: class ObjectsController < ApplicationController def index @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @objects = @bucket.list_objects(:prefix => @prefix, :delimiter => '/') endend 上面的代码首先从URL的参数中获取Bucket名字,为了只按目录层级显示,我们还需要一个前缀。然后调用OSS Client的list_objects接口获取文件列表。注意,这里获取的是指定前缀下,并且以’/‘为分界的文件。这样做是为也按目录层级列出文件。请参考管理文件 接下来编辑app/views/objects/index.html.erb: <h1>Objects in <%= @bucket_name %></h1><p> <%= link_to 'Upload file', new_object_path(@bucket_name, @prefix) %></p><table class="table table-striped"> <tr> <th>Key</th> <th>Type</th> <th>Size</th> <th>LastModified</th> </tr> <tr> <td><%= link_to '../', with_prefix(upper_dir(@prefix)) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> </tr> <% @objects.each do |object| %> <tr> <% if object.is_a?(Aliyun::OSS::Object) %> <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> <td><%= object.type %></td> <td><%= number_to_human_size(object.size) %></td> <td><%= object.last_modified.localtime.to_s %></td> <% else %> <td><%= link_to remove_prefix(object, @prefix), with_prefix(object) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> <% end %> </tr> <% end %></table> 上面的代码将文件按目录结构显示,主要逻辑是: 总是在第一个显示’../‘指向上级目录对于Common prefix,显示为目录对于Object,显示为文件 上面的代码中用到了with_prefix, remove_prefix等一些辅助函数,它们定义在app/helpers/objects_helper.rb中: module ObjectsHelper def with_prefix(prefix) "?prefix=#{prefix}" end def remove_prefix(key, prefix) key.sub(/^#{prefix}/, '') end def upper_dir(dir) dir.sub(/[^\/]+\/$/, '') if dir end def new_object_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/new/#{with_prefix(prefix)}" end def objects_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/#{with_prefix(prefix)}" endend 完成之后运行rails s,然后在浏览器中输入地址http://localhost:3000/buckets/my-bucket/objects/就可以查看文件列表了。 惯例保存代码: git add .git commit -m "add list objects feature"6. 下载文件注意到在上一步显示文件列表时,我们为每个文件也添加了一个链接: <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> 其中Bucket#object_url是一个为文件生成临时URL的方法,参考下载文件 7. 上传文件在Rails这种服务端应用中,用户上传文件有两种办法: 用户先将文件上传到Rails的服务器上,服务器再将文件上传到OSS。这样做需要Rails服务器作为中转,文件多拷贝了一遍,不是很高效。服务器为用户生成表单和临时凭证,用户直接上传文件到OSS。 第一种方法比较简单,与普通的上传文件一样。下面我们用的是第二种方法: 首先在app/controllers/objects_controller.rb中增加一个#new方法,用于生成上传表单: def new @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @options = { :prefix => @prefix, :redirect => 'http://localhost:3000/buckets/' }end 然后编辑app/views/objects/new.html.erb: <h2>Upload object</h2><%= upload_form(@bucket, @options) do %> <table class="table table-striped"> <tr> <td><label>Bucket:</label></td> <td><%= @bucket.name %></td> </tr> <tr> <td><label>Prefix:</label></td> <td><%= @prefix %></td> </tr> <tr> <td><label>Select file:</label></td> <td><input type="file" name="file" style="display:inline" /></td> </tr> <tr> <td colspan="2"> <input type="submit" class="btn btn-default" value="Upload" /> <span>&nbsp;&nbsp</span> <%= link_to 'Back', objects_path(@bucket_name, @prefix) %> </td> </tr> </table><% end %> 其中upload_form是SDK提供的一个方便用户生成上传表单的辅助函数,在SDK的代码rails/aliyun_oss_helper.rb中。用户需要将其拷贝到app/helpers/目录下。完成之后运行rails s,然后访问http://localhost:3000/buckets/my-bucket/objects/new就能够上传文件了。 最后记得保存代码: git add .git commit -m "add upload object feature"8. 添加样式为了让界面更好看一些,我们可以添加一点样式(CSS)。 首先下载bootstrap,解压后将bootstrap.min.css拷贝到app/assets/stylesheets/下。 然后在修改app/views/layouts/application.html.erb,将yield一行改成: <div id="main"> <%= yield %> </div> 这会为每个页面添加一个id为main的<div>,然后修改app/assets/stylesheets/application.css,加入以下内容: body { text-align: center;}div#main { text-align: left; width: 1024px; margin: 0 auto;} 这会让网页的主体内容居中显示。通过添加简单的样式,我们的页面是不是更加赏心悦目了呢? 至此,一个简单的demo就完成了。完整的demo代码请参看 Alibaba Cloud OSS Rails Demo。

2019-12-01 23:14:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档与Rails集成在Rails应用中使用OSS Ruby SDK只需要在Gemfile中添加以下依赖: gem 'aliyun-sdk', '~> 0.3.0然后在使用OSS时引入依赖就可以了: require 'aliyun/oss'另外,SDK的rails/目录下提供一些方便用户使用的辅助代码。 下面我们将利用SDK来实现一个简单的OSS文件管理器(oss-manager),最终包含以下功能: 列出用户所有的Bucket列出Bucket下所有的文件,按目录层级列出上传文件下载文件 1. 创建项目先安装Rails,然后创建一个Rails应用,oss-manager: gem install railsrails new oss-manager作为一个好的习惯,使用git管理项目代码: cd oss-managergit initgit add .git commit -m "init project"2. 添加SDK依赖编辑oss-manager/Gemfile,向其中加入SDK的依赖: gem 'aliyun-sdk', '~> 0.3.0'然后在oss-manager/下执行: bundle install保存这一步所做的更改: git add .git commit -m "add aliyun-sdk dependency"3. 初始化OSS Client为了避免在项目中用到OSS Client的地方都要初始化,我们在项目中添加一个初始化文件,方便在项目中使用OSS Client: # oss-manager/config/initializers/aliyun_oss_init.rbrequire 'aliyun/oss'module OSS def self.client unless @client Aliyun::Common::Logging.set_log_file('./log/oss_sdk.log') @client = Aliyun::OSS::Client.new( endpoint: Rails.application.secrets.aliyun_oss['endpoint'], access_key_id: Rails.application.secrets.aliyun_oss['access_key_id'], access_key_secret: Rails.application.secrets.aliyun_oss['access_key_secret'] ) end @client endend 上面的代码在SDK的rails/目录下可以找到。这样初始化后,在项目中使用OSSClient就非常方便: buckets = OSS.client.list_buckets其中endpoint和AccessKeyId/AccessKeySecret保存在oss-manager/conf/secrets.yml中,例如: development: secret_key_base: xxxx aliyun_oss: endpoint: xxxx access_key_id: aaaa access_key_secret: bbbb 保存代码: git add .git commit -m "add aliyun-sdk initializer"4. 实现List buckets功能首先用rails生成管理Buckets的controller: rails g controller buckets index这样会在oss-manager中生成以下文件: app/controller/buckets_controller.rb Buckets相关的逻辑代码app/views/buckets/index.html.erb Buckets相关的展示代码app/helpers/buckets_helper.rb 一些辅助函数 首先编辑buckets_controller.rb,调用OSS Client,将list_buckets的结果存放在@buckets变量中: class BucketsController < ApplicationController def index @buckets = OSS.client.list_buckets endend 然后编辑views/buckets/index.html.erb,将Bucket列表展示出来: <h1>Buckets</h1><table class="table table-striped"> <tr> <th>Name</th> <th>Location</th> <th>CreationTime</th> </tr> <% @buckets.each do |bucket| %> <tr> <td><%= link_to bucket.name, bucket_objects_path(bucket.name) %></td> <td><%= bucket.location %></td> <td><%= bucket.creation_time.localtime.to_s %></td> </tr> <% end %></table> 其中bucket_objects_path是一个辅助函数,在app/helpers/buckets_helper.rb中: module BucketsHelper def bucket_objects_path(bucket_name) "/buckets/#{bucket_name}/objects" endend 这样就完成了列出所有Bucket的功能。在运行之前,我们还需要配置Rails的路由,使得我们在浏览器中输入的地址能够调用正确的逻辑。编辑config/routes.rb,增加一条: resources :buckets do resources :objectsend好了,在oss-manager/下输入rails s以启动rails server,然后在浏览器中输入http://localhost:3000/buckets/就能看到Bucket列表了。 最后保存一下代码: git add .git commit -m "add list buckets feature"5. 实现List objects功能首先生成一个管理Objects的controller: rails g controller objects index然后编辑app/controllers/objects_controller.rb: class ObjectsController < ApplicationController def index @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @objects = @bucket.list_objects(:prefix => @prefix, :delimiter => '/') endend 上面的代码首先从URL的参数中获取Bucket名字,为了只按目录层级显示,我们还需要一个前缀。然后调用OSS Client的list_objects接口获取文件列表。注意,这里获取的是指定前缀下,并且以’/‘为分界的文件。这样做是为也按目录层级列出文件。请参考管理文件 接下来编辑app/views/objects/index.html.erb: <h1>Objects in <%= @bucket_name %></h1><p> <%= link_to 'Upload file', new_object_path(@bucket_name, @prefix) %></p><table class="table table-striped"> <tr> <th>Key</th> <th>Type</th> <th>Size</th> <th>LastModified</th> </tr> <tr> <td><%= link_to '../', with_prefix(upper_dir(@prefix)) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> </tr> <% @objects.each do |object| %> <tr> <% if object.is_a?(Aliyun::OSS::Object) %> <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> <td><%= object.type %></td> <td><%= number_to_human_size(object.size) %></td> <td><%= object.last_modified.localtime.to_s %></td> <% else %> <td><%= link_to remove_prefix(object, @prefix), with_prefix(object) %></td> <td>Directory</td> <td>N/A</td> <td>N/A</td> <% end %> </tr> <% end %></table> 上面的代码将文件按目录结构显示,主要逻辑是: 总是在第一个显示’../‘指向上级目录对于Common prefix,显示为目录对于Object,显示为文件 上面的代码中用到了with_prefix, remove_prefix等一些辅助函数,它们定义在app/helpers/objects_helper.rb中: module ObjectsHelper def with_prefix(prefix) "?prefix=#{prefix}" end def remove_prefix(key, prefix) key.sub(/^#{prefix}/, '') end def upper_dir(dir) dir.sub(/[^\/]+\/$/, '') if dir end def new_object_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/new/#{with_prefix(prefix)}" end def objects_path(bucket_name, prefix = nil) "/buckets/#{bucket_name}/objects/#{with_prefix(prefix)}" endend 完成之后运行rails s,然后在浏览器中输入地址http://localhost:3000/buckets/my-bucket/objects/就可以查看文件列表了。 惯例保存代码: git add .git commit -m "add list objects feature"6. 下载文件注意到在上一步显示文件列表时,我们为每个文件也添加了一个链接: <td><%= link_to remove_prefix(object.key, @prefix), @bucket.object_url(object.key) %></td> 其中Bucket#object_url是一个为文件生成临时URL的方法,参考下载文件 7. 上传文件在Rails这种服务端应用中,用户上传文件有两种办法: 用户先将文件上传到Rails的服务器上,服务器再将文件上传到OSS。这样做需要Rails服务器作为中转,文件多拷贝了一遍,不是很高效。服务器为用户生成表单和临时凭证,用户直接上传文件到OSS。 第一种方法比较简单,与普通的上传文件一样。下面我们用的是第二种方法: 首先在app/controllers/objects_controller.rb中增加一个#new方法,用于生成上传表单: def new @bucket_name = params[:bucket_id] @prefix = params[:prefix] @bucket = OSS.client.get_bucket(@bucket_name) @options = { :prefix => @prefix, :redirect => 'http://localhost:3000/buckets/' }end 然后编辑app/views/objects/new.html.erb: <h2>Upload object</h2><%= upload_form(@bucket, @options) do %> <table class="table table-striped"> <tr> <td><label>Bucket:</label></td> <td><%= @bucket.name %></td> </tr> <tr> <td><label>Prefix:</label></td> <td><%= @prefix %></td> </tr> <tr> <td><label>Select file:</label></td> <td><input type="file" name="file" style="display:inline" /></td> </tr> <tr> <td colspan="2"> <input type="submit" class="btn btn-default" value="Upload" /> <span>&nbsp;&nbsp</span> <%= link_to 'Back', objects_path(@bucket_name, @prefix) %> </td> </tr> </table><% end %> 其中upload_form是SDK提供的一个方便用户生成上传表单的辅助函数,在SDK的代码rails/aliyun_oss_helper.rb中。用户需要将其拷贝到app/helpers/目录下。完成之后运行rails s,然后访问http://localhost:3000/buckets/my-bucket/objects/new就能够上传文件了。 最后记得保存代码: git add .git commit -m "add upload object feature"8. 添加样式为了让界面更好看一些,我们可以添加一点样式(CSS)。 首先下载bootstrap,解压后将bootstrap.min.css拷贝到app/assets/stylesheets/下。 然后在修改app/views/layouts/application.html.erb,将yield一行改成: <div id="main"> <%= yield %> </div> 这会为每个页面添加一个id为main的<div>,然后修改app/assets/stylesheets/application.css,加入以下内容: body { text-align: center;}div#main { text-align: left; width: 1024px; margin: 0 auto;} 这会让网页的主体内容居中显示。通过添加简单的样式,我们的页面是不是更加赏心悦目了呢? 至此,一个简单的demo就完成了。完整的demo代码请参看 Alibaba Cloud OSS Rails Demo。

2019-12-01 23:14:34 0 浏览量 回答数 0

问题

Ruby-SDK之如何实现Rails应用?

青衫无名 2019-12-01 21:46:56 1481 浏览量 回答数 0

回答

Vue 相对不于 React 的一个优点是它易于理解和学习,且在国内占大多数。咱们可以在 Vue 的帮助下创建任何 Web 应用程序。 因此,时时了解一些新出现又好用的Vue 开源项目也是挺重要,一方面可以帮助咱们更加高效的开发,另一方面,咱们也可以模范学习其精华部分。 接下来看看新出的有哪些好用的开源项目。 uiGradients 网址: http://uigradients.com/ GitHub: https://github.com/ghosh/uiGradients GitHub Stars: 4.6k 彩色阵列和出色的UX使是这个项目的一个亮点,渐变仍然是网页设计中日益增长的趋势。 咱们可以选择所需的颜色,并可以获得所有可能的渐变,并获取对应的 CSS 代码, 赶紧收藏起来吧。 CSSFX CSS 过度效果的集合 网址: https://cssfx.dev GitHub: https://github.com/jolaleye/cssfx GitHub Stars: 3.5k CSSFX 里面有很多 CSS 过滤效果,咱们可以根据需求选择特定的动画,点击对应的效果即可看到生成的 CSS 代码,动手搞起来吧。 Sing App Vue Dashboard 一个管理模板 网址: https://flatlogic.com/templat... GitHub: https://github.com/flatlogic/sing-app-vue-dashboard GitHub Stars: 254 事例:https://flatlogic.com/templates/sing-app-vue-dashboard/demo 文档:https://demo.flatlogic.com/sing-app/documentation/ 这是基于最新 Vue 和 Bootstrap 免费和开源的管理模板,其实跟咱们国内的 vue-admin-template 差不多。咱们不一定要使用它,但可以研究学习源码,相信可以学到很多实用的技巧,加油少年。 Vue Storefront 网址: https://www.vuestorefront.io GitHub: https://github.com/DivanteLtd/vue-storefront GitHub Stars: 5.8k 这是一个PWA,可以连接到任何后端(或几乎任何后端)。这个项目的主要优点是使用了无头架构。这是一种全面的解决方案,为咱们提供了许多可能性(巨大的支持稳步增长的社区,服务器端渲染,将改善网页SEO,移动优先的方法和离线模式。 Faviator 图标生成的库 网址: https://www.faviator.xyz GitHub: https://www.faviator.xyz/playground GitHub Stars: 94 如果需要创建一个图标增加体验度。 可以使用任何 Google 字体以及任何颜色。只需通过首选的配置,然后选择PNG,SVG或JPG格式即可。 iView Vue UI 组件库 网址: https://iviewui.com/ GitHub: https://github.com/iview/iview GitHub Stars: 22.8k 不断迭代更新使这组UI组件成为具有任何技能水平的开发人员的不错选择。 要使用iView,需要对单一文件组件有充分的了解,该项目具有友好的API和大量文档。 Postwoman API请求构建器 网址: https://postwoman.io/ GitHub: https://github.com/liyasthomas/postwoman GitHub Stars: 10.5k 这个与 Postman 类似。 它是免费的,具有许多参与者,并且具有多平台和多设备支持。 这个工具真的非常快,并且有大量的更新。 该工具的创建者声称在不久的将来会有更多功能。 Vue Virtual Scroller 快速滚动 网址: https://akryum.github.io/vue-virtual-scroller/#/ GitHub: https://github.com/Akryum/vue-virtual-scroller GitHub Stars: 3.4k Vue Virtual Scroller具有四个主要组件。 RecycleScroller可以渲染列表中的可见项。 如果咱们不知道数据具体的数量,最好使用DynamicScroller。 DynamicScrollerItem将所有内容包装在DynamicScroller中(以处理大小更改)。 IdState简化了本地状态管理(在RecycleScroller内部)。 Mint UI 移动端的 UI 库 网址: http://mint-ui.github.io/#!/en GitHub: https://github.com/ElemeFE/mint-ui GitHub Stars: 15.2k 使用现成的CSS和JS组件更快地构建移动应用程序。使用此工具,咱们不必承担文件大小过大的风险,因为可以按需加载。动画由CSS3处理,由此来提高性能。 V Calendar 用于构建日历的无依赖插件 网址: https://vcalendar.io GitHub:https://github.com/nathanreyes/v-calendar GitHub Stars: 1.6k 您可以选择不同的视觉指示器来装饰日历。 V Calendar还为咱们提供了三种日期选择模式: 单选 多选 日期范围 Vue Design System 一组UI工具 网址: https://vueds.com/ GitHub: https://github.com/viljamis/vue-design-system GitHub Stars: 1.7k 这是一种组织良好的工具,对于任何web开发团队来说,它的命名都很容易理解。其中一个很大的优点是使用了更漂亮的代码格式化器,它可以在提交到Git之前自动排列代码。 Proppy UI组件的功能道具组合 网址: https://proppyjs.com GitHub: https://github.com/fahad19/proppy GitHub Stars: 856 ProppyJS 是一个很小的库,用于组合道具,它附带了各种集成包,让您可以自由地使用它流行的渲染库。 我们的想法是首先将Component的行为表达为props,然后使用Proppy的相同API将其连接到您的Component(可以是React,Vue.js或Preact)。 API还允许您访问其他应用程序范围的依赖项(如使用Redux的商店),以方便组件树中的任何位置。 Light Blue Vue Admin vue 后台展示模板 网址: https://flatlogic.com/templates/light-blue-vue-lite GitHub: https://github.com/flatlogic/light-blue-vue-admin GitHub Stars: 79 事例: https://demo.flatlogic.com/light-blue-vue-admin/#/app/dashboard 文档: https://demo.flatlogic.com/light-blue/documentation/ 模板是用Vue CLI和Bootstrap 4构建的。从演示中可以看到,这个模板有一组非常基本的页面:排版、地图、图表、聊天界面等。如果咱们需要一个扩展的模板,可以看看Light Blue Vue Full,它有60多个组件,无 jquery,有两个颜色主题。 Vue API Query 为 REST API 构建请求 GitHub: https://github.com/robsontenorio/vue-api-query GitHub Stars: 1.1k 关于这个项目没什么好说的。它所做的与描述行中所写的完全一样:它帮助咱们构建REST API的请求。 Vue Grid Layout Vue 的网格布局 Website: https://jbaysolutions.github.io/vue-grid-layout/examples/01-basic.html GitHub: https://github.com/jbaysolutions/vue-grid-layout GitHub Stars: 3.1k 所有网格相关问题的简单解决方案。它有静态的、可调整大小的和可拖动的小部件。还是响应和布局可以恢复和序列化。如果还需要再添加一个小部件,则不必重新构建所有网格。 Vue Content Loader 创建一个占位符加载 Website: http://danilowoz.com/create-vue-content-loader GitHub: https://github.com/egoist/vue-content-loader GitHub Stars: 2k 当咱们开发网站或者 APP 时,遇到内容过多加载速度慢时,会导致用户打开页面有大量空白页,vue-content-loader正是解决这个问题的一个组件,使加载内容之前生成一个dom模板,提高用户体验。 Echarts with Vue2.0 数据可视化 Website: https://simonzhangiter.github.io/DataVisualization/#/dashboard GitHub: https://github.com/SimonZhangITer/DataVisualization GitHub Stars: 1.3k 在图片中,咱们可以看到非常漂亮的图表。这个项目使任何数据都更具可读性,更容易理解和解释。它允许咱们在任何数据集中轻松地检测趋势和模式。 Vue.js Modal 高度可定制的模态框 Website: http://vue-js-modal.yev.io/ GitHub: https://github.com/euvl/vue-js-modal GitHub Stars: 2.9k 可以在该网站上查看所有不同类型的模态。 有15个按钮,按任意一个按钮,看到一个模态示例。 Vuesax 框架组件 Website: https://lusaxweb.github.io/vuesax/ GitHub: https://github.com/lusaxweb/vuesax GitHub Stars: 3.7k 这个项目在社区中很受欢迎。 它使咱们可以为每个组件设计不同的风格。 Vuesax的创建者强调,每个Web开发人员在进行Web设计时都应有选择的自由。 Vue2 Animate vue2.0 —使用animate.css 构建项目和创建组件 Website: https://the-allstars.com/vue2-animate/ GitHub: https://github.com/asika32764/vue2-animate GitHub Stars: 1.1k 这个库是跨浏览器的,咱们可以选择从5种类型的动画: rotate,slide,fade,bounce和zoom。在网站上有一个演示。动画的默认持续时间是1秒,但是咱们可以自定义该参数。 Vuetensils Vue.js的工具集 Website: https://vuetensils.stegosource.com/ GitHub: https://github.com/stegosource/vuetensils GitHub Stars: 111 这个UI库有一个标准的功能,但是最酷的是它没有额外的样式。你可以让设计尽可能的个性化,应用所有的需求。只需编写需要的样式,将其添加到项目中,并包含需要的尽可能多的组件。

茶什i 2020-01-09 10:39:02 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站